私はautomapperが動作するように設定しています。属性は、 とうまく動作し、正しくDTOを埋めています。私のコントローラは、私はDataAnnotationは私のEntityオブジェクトであると実装、どこでもユーザーオブジェクトを使用して経由インタフェースであるリポジトリに を渡されたユーザーオブジェクトに設定されているautomapper、Onコントローラでアクションを作成します。混乱している
[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);
}
以下のようなアクションが見えます作成します。
私がしたいことは、上記の同じコードを使用して以下のようになります。
[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になりました。 を検証したら、私はインターフェイスでUserCreateDTOを置き換えるために、すべてのコードを変更することはできません
public interface IUserRepository
{
IQueryable<User> GetAllUsers();
User GetUserById(Guid id);
void Create(User user);
User Edit(User user);
void Delete(User user);
void Save();
}
以下のようなユーザーオブジェクトがインタフェースであるとして私を 許可していないメソッドを作成するuserdtoを渡すときである問題があるよりも、渡されましたリポジトリとUserEditDTO/UserShowDTOがある場合はどうなりますか? どうすればこの問題を解決できますか。私は可能な限り説明した。
上記の行動方法の例を教えてください。感謝します。私はオートマッパーについている。 – Pirzada
答えを更新しました。あなたが助けを必要とする場合は、再度コメントしてください – rboarman
AutoMapper.Profileを継承し、Configureをオーバーライドする独自のクラスを作成することによって、アプリケーションの1か所にマップを作成する呼び出しを移動することもできます。 – CRice