У меня есть все, что нужно для работы автомата.Атрибут тоже работает нормально и правильно заполняет DTO.Действие создания моего контроллера выглядит следующим образом:
[HttpPost]
[AutoMap(typeof(User), typeof(UserCreateDTO))]
public ActionResult Create(User user)
{
if (ModelState.IsValid)
{
_repository.Create(user);
return RedirectToAction("Details", new { id = user.UserId });
}
return View("Edit", user);
}
У меня установлен DataAnnotation для объекта User, который является моим объектом Entity и передается в хранилище, которое является интерфейсом через реализацию и везде использует объект User.
То, что я хочу сделать, это как показано ниже, используя тот же код выше.
[HttpPost]
[AutoMap(typeof(User), typeof(UserCreateDTO))]
public ActionResult Create(UserCreateDTO userdto)
{
if (ModelState.IsValid)
{
_repository.Create(userdto);
return RedirectToAction("Details", new { id = userdto.UserId });
}
return View("Edit", userdto);
}
Вопрос: Моя DataAnnotation теперь на UserCreateDTO, чтобы ограничить то, что я хочу проверить.После того, как проверка прошла успешно, возникает проблема, когда я передаю userdto в метод Create, который не позволяет мне как объект User находится в интерфейсе, как показано ниже
public interface IUserRepository
{
IQueryable<User> GetAllUsers();
User GetUserById(Guid id);
void Create(User user);
User Edit(User user);
void Delete(User user);
void Save();
}
Я не могу изменить весь код для замены UserCreateDTO в интерфейсеи Репозиторий и Что, если у меня есть UserEditDTO / UserShowDTO.Как мне решить эту проблему?Я объяснил как можно больше.