我想检查我是否做对了。
所以我试图在.net核心中创建一个API。
这就是控制器:
[HttpPost]
public IActionResult CreateAdministrator([FromBody]AdministratorViewModel administrator){
_unitOfWork.Administrators.Add(new Administrator
{
FirstName = administrator.FirstName,
LastName = administrator.LastName,
EmailAddress = administrator.EmailAddress,
Password = administrator.Password,
ManageAdministrators = administrator.ManageAdministrators
});
_unitOfWork.Complete();
}
因此,我将AdministratorViewModel
作为包含用户所做输入的对象。
然后,我将信息传递给Administrator
对象以创建新的管理员。
有没有一种更好的方法,那就一直写
property = administrator.property
。因此,例如,如果我添加一个额外的字段DateOfBirth
,则必须在3个不同的位置(视图模型,模型和控制器)中添加它。
是否可以只填充或“合并”两个对象的属性,以便自动填充所有填充的属性?
还是应该以其他方式执行此操作?
答案 0 :(得分:3)
您可以为此https://docs.automapper.org/en/stable/使用自动映射器
您可以创建另一种方法的另一种方法,例如
Administrator ModelFromView (AdministratorViewModel viewModel)
{
//mapping code
}
但是,每次以这种方式向类中添加新属性时,都必须向该方法添加新的映射属性。 Automapper可以避免这种情况。但是有时您需要对映射过程进行更多控制,第二种方法可能会帮助您。
答案 1 :(得分:1)
您可以为您的类AdministratorViewModel
创建一个副本构造函数,并在那里处理所有业务逻辑。
之后,您可以使用:
_unitOfWork.Administrators.Add(new Administrator(administrator));
通过这种方法,您以后决定添加更多属性时,不必在所有位置添加属性。
答案 2 :(得分:0)
并非始终是使用AutoMapper的最佳方法。有趣的是here。
答案 3 :(得分:0)
您需要的是Automapper
我在生产环境中使用了它