Entity Framework возвращает значение null после обновления объекта ⇐ C#
-
Anonymous
Entity Framework возвращает значение null после обновления объекта
Я новичок в Entity Framework и пытаюсь обновить сущность и вернуть ее с ее отношениями. Прежде всего, EF не возвращает сущность с ее отношениями. Он возвращает только себя, поэтому я решил сначала обновить объект, а затем получить объект с его отношениями. Но на этот раз, когда я вызываю метод GetSingle, я получаю этот объект null.
Вот класс сущности:
публичный класс Продавец: BaseEntity { общественная строка UserId {get; набор; } = Строка.Пусто; публичный пользователь приложения? Пользователь {получить; набор; } общедоступная строка? Специальность {получить; набор; } = Строка.Пусто; общедоступная строка? Промышленность {получить; набор; } = Строка.Пусто; общедоступная строка? Выпускной {получить; набор; } = Строка.Пусто; общедоступное руководство? SellerImageId {получить; набор; } публичный имидж? SellerImage {получить; набор; } общедоступное руководство? SellerMainCategoryId {получить; набор; } общественная категория? SellerMainCategory {получить; набор; } публичная строка SellerBio {get; набор; } = Строка.Пусто; [NotMapped] публичный IFormFile? ImageFile {получить; набор; } //Навигация публичная компания-продавец? ПродавецКомпани {получить; набор; } общедоступный список? SellerBankInfos {получить; набор; } } Вот метод контроллера:
[HttpPut] [Маршрут("обновление")] public async Task Update([FromBody] UpdateSellerDto updateSellerDto) { вар SellEntity = _mapper.Map(updateSellerDto); SellEntity = ждут _sellerService.UpdateSellerAsync(sellerEntity); если (sellerEntity имеет значение null) { return Execute(UnSuccessRequest, () => { вернуть «Ошибка при обновлении»; }); } вар обновленныйSeller = ждут _sellerService.GetSingleSeller(Guid.Parse(updateSellerDto.Id)); вар SellResponse = _mapper.Map(updatedSeller); return Execute(SuccessRequest, () => { вернуть ответ продавца; }); } Вот сервисный метод обновления (этот метод обновляет, но возвращает только сущность, а не сущность с ее отношениями, например «SellerMainCategory»):
public async Task UpdateSellerAsync (продавец-продавец) { вар updateResult = _context.Sellers.Update(продавец); ждут _context.SaveChangesAsync(); вернуть updateResult.Entity; } А вот единственный метод get в сервисе; это работает, когда я вызываю только этот метод, но возвращает значение null, когда я вызываю его после обновления:
public async Task GetSingleSeller (Guid userId) { вар продавец = ожидайте _context.Sellers .Include(c => c.User) .Include(x => x.SellerMainCategory) .FirstOrDefaultAsync(s => s.UserId == userId.ToString()); возврат продавца; } Я просто не мог понять рабочий процесс EF.
Я новичок в Entity Framework и пытаюсь обновить сущность и вернуть ее с ее отношениями. Прежде всего, EF не возвращает сущность с ее отношениями. Он возвращает только себя, поэтому я решил сначала обновить объект, а затем получить объект с его отношениями. Но на этот раз, когда я вызываю метод GetSingle, я получаю этот объект null.
Вот класс сущности:
публичный класс Продавец: BaseEntity { общественная строка UserId {get; набор; } = Строка.Пусто; публичный пользователь приложения? Пользователь {получить; набор; } общедоступная строка? Специальность {получить; набор; } = Строка.Пусто; общедоступная строка? Промышленность {получить; набор; } = Строка.Пусто; общедоступная строка? Выпускной {получить; набор; } = Строка.Пусто; общедоступное руководство? SellerImageId {получить; набор; } публичный имидж? SellerImage {получить; набор; } общедоступное руководство? SellerMainCategoryId {получить; набор; } общественная категория? SellerMainCategory {получить; набор; } публичная строка SellerBio {get; набор; } = Строка.Пусто; [NotMapped] публичный IFormFile? ImageFile {получить; набор; } //Навигация публичная компания-продавец? ПродавецКомпани {получить; набор; } общедоступный список? SellerBankInfos {получить; набор; } } Вот метод контроллера:
[HttpPut] [Маршрут("обновление")] public async Task Update([FromBody] UpdateSellerDto updateSellerDto) { вар SellEntity = _mapper.Map(updateSellerDto); SellEntity = ждут _sellerService.UpdateSellerAsync(sellerEntity); если (sellerEntity имеет значение null) { return Execute(UnSuccessRequest, () => { вернуть «Ошибка при обновлении»; }); } вар обновленныйSeller = ждут _sellerService.GetSingleSeller(Guid.Parse(updateSellerDto.Id)); вар SellResponse = _mapper.Map(updatedSeller); return Execute(SuccessRequest, () => { вернуть ответ продавца; }); } Вот сервисный метод обновления (этот метод обновляет, но возвращает только сущность, а не сущность с ее отношениями, например «SellerMainCategory»):
public async Task UpdateSellerAsync (продавец-продавец) { вар updateResult = _context.Sellers.Update(продавец); ждут _context.SaveChangesAsync(); вернуть updateResult.Entity; } А вот единственный метод get в сервисе; это работает, когда я вызываю только этот метод, но возвращает значение null, когда я вызываю его после обновления:
public async Task GetSingleSeller (Guid userId) { вар продавец = ожидайте _context.Sellers .Include(c => c.User) .Include(x => x.SellerMainCategory) .FirstOrDefaultAsync(s => s.UserId == userId.ToString()); возврат продавца; } Я просто не мог понять рабочий процесс EF.
Мобильная версия