Функция обновления в моем CRUD с архитектурой Repository-Services-ControllersC#

Место общения программистов C#
Anonymous
Функция обновления в моем CRUD с архитектурой Repository-Services-Controllers

Сообщение Anonymous »

У меня есть уровень репозитория, уровень обслуживания и уровень контроллера для моего пользовательского объекта. Я хочу обновить одну из моих записей по имени пользователя.
Это мой уровень хранилища для обновления:

Код: Выделить всё

public async Task UpdateUserAsync(entities.User entity)
{
_dbContext.Users.Update(entity);
await _dbContext.SaveChangesAsync();
return entity;
}

public async Task GetUserAsync(string userName)
{
var result = await _dbContext.Users
.FirstOrDefaultAsync(x => x.UserName == userName);
return result;
}
Теперь я использую свой метод обновления на уровне сервиса:

Код: Выделить всё

public async Task UpdateUserAsync(UserUpdateRequestDto dto)
{
var user = await _userRepository.GetUserAsync(dto.UserName);

if (user == null)
{
throw new Exception("User not found.");
}

user.Email = dto.Email ?? user.Email;
user.Name = dto.Name ?? user.Name;
user.Family = dto.Family ?? user.Family;
user.Password = dto.Password ?? user.Password;
user.ConfirmPassword = dto.ConfirmPassword ?? user.ConfirmPassword;
user.RoleId = dto.RoleId != 0 ? dto.RoleId : user.RoleId;

await _userRepository.UpdateUserAsync(user);
}
Это мой раздел контроллера для этой функции:

Код: Выделить всё

[HttpPut]
[Route("update-user")]
public async Task UpdateUserAsync(UserUpdateRequestDto dto)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

try
{
await _userService.UpdateUserAsync(dto);

return Ok("User updated successfully.");
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
Моя проблема в том, что когда я попробовал функцию обновления с помощью Swagger, она обновляет мою запись, но показывает строковое значение для всех полей, и если я ввожу имя пользователя и значение для других полей, это обновляет, но изменяет другие записи в базе данных на строковые.
Как решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/790 ... chitecture

Вернуться в «C#»