私はAutomapperをMVCプロジェクトで使用します。私はASP.NET Identityも使用し、ApplicationUserクラスから私のカスタムユーザーテーブル(StudentとCoordinator)を継承します。問題はそれです;私はユーザーデータを取得し、そこにカスタムプロパティ(Numberと呼ばれます)が入っていますが、Automappeのマッピングを適用すると、ApplicationUserのプロパティだけが塗りつぶされ、Numberプロパティはnullになります。間違いや修正方法はありますか?Automapperはプロパティを埋め込むことができません
ドメインモデル:
public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>, IUser<int>
{
public string Name { get; set; }
public string Surname { get; set; }
//code omitted for brevity
}
public class Student: ApplicationUser
{
public int? Number { get; set; }
}
のViewModel:
public class RegisterViewModel
{
public int Id { get; set; }
public int? Number { get; set; }
//code omitted for brevity
}
コントローラー:
[AllowAnonymous]
[HttpGet]
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
ApplicationUser user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<ApplicationUser, RegisterViewModel>();
});
IMapper mapper = config.CreateMapper();
//var source = new ApplicationUser();
var dest = mapper.Map<ApplicationUser, RegisterViewModel>(user);
return PartialView("_Details", dest);
}
もうひとつのマッピングを行う - あなたはすべての単一のコントローラのアクションにAutoMapperを設定しないでください。 AutoMapper設定は静的で、AppDomainごとに一度定義されたEF設定と同じです。 global.asaxなどでMapper.Initializeを使用し、マップを一度初期化する必要があります。 –
@JimmyBogard返信ありがとうございます。 ** 1)**答えとして例を掲示していただけますか? ** 2)**私はApplicationUserをControllerのRegisterViewModelに変換する必要があります。その場合、これを解決する方法はありますか?返信していただけますか? –
RegisterViewModelを表示できますか? – morecchia808