【发布时间】:2014-01-09 16:48:40
【问题描述】:
我的表 OWNER 有一个模型
namespace MyApp.Models
{
public partial class Owner
{
public int owner_id { get; set; }
public string firstname { get; set; }
public string lastname { get; set; }
public string address { get; set; }
public string city { get; set; }
public virtual User User { get; set; }
}
}
然后我有我的 ViewModel
public partial class OwnerData
{
public string firstname { get; set; }
public string lastname { get; set; }
public string address { get; set; }
}
我的控制器
public ActionResult Index()
{
//Create the object Owner based on the User Identity
Owner owner = CustomDbFunctions.GetUserEntity(User, db).Owner;
//New instance of the ViewModel
OwnerData ownerData = new OwnerData();
ownerData.lastname = owner.lastname;
ownerData.firstname = owner.firstname;
ownerData.address = owner.address;
return View(ownerData);
}
有一种更简单的方法可以将我的 owner 转换为 ownerData 而不重写我的对象的每个属性?
【问题讨论】:
-
有办法,但肯定不简单。保持这种方式
-
有些工具使用“反射”并通过匹配属性名称为您执行此操作。我现在会保持这种方式,但会在 OwnerData 中添加一个接受 Owner 对象并执行此操作的构造函数。
-
@A Khudairy 我想我通过 Mapper.CreateMap
(); 然后 Automapper 找到了一个很好的解决方案b>OwnerData ownerData = Mapper.Map(CustomDbFunctions.GetUserEntity(User, db).Owner);
标签: asp.net-mvc-4 entity-framework-4 viewmodel