我有成员不完全匹配的实体和Dtos。实体大多数时间都是所有成员(对于db中的每一列),但Dtos只有那些正在向客户端发送(需要)的成员。
因此,例如,当Dto来自客户端时,我想将其传输到Entity并保存数据库中的更改。这段代码解释了我现在正在努力的地方:
public class ItemEntity
{
public int Id { get; set; }
public string Name { get; set; }
public int Category { get; set; }
public int Foo { get; set; }
public int Bar { get; set; }
}
public class ItemNameDto
{
public int Id { get; set; }
public string Name { get; set; }
}
public void UpdateItem(ItemNameDto itemNameDto)
{
using (var myc = ContextFactory.CreateMyContext())
{
var item = myc.Items.Where(i => i.Id == itemNameDto.Id).FirstOrDefault();
// At this point I have the current Item from the database:
// (while dubugging) item.Id=1
// (while dubugging) item.Name="Item1"
// (while dubugging) item.Category=1
// (while dubugging) item.Foo=20
// (while dubugging) item.Bar=40
// Now I want to change only members, that appear in itemNameDto:
// (while dubugging) itemDto.Id=1
// (while dubugging) itemDto.Name="New name for Item1"
item = Mapper.Map<Item>(itemDto);
// (while dubugging) item.Id=1
// (while dubugging) item.Name="New name for Item1"
// (while dubugging) item.Category=1
// (while dubugging) item.Foo=20
// (while dubugging) item.Bar=40
myc.SaveChanges();
}
}
我想维护所有未出现在ItemNameDto中的成员。所以我想:
item = Mapper.Map<Item>(itemDto);
// (while dubugging) item.Id=1
// (while dubugging) item.Name="New name for Item1"
// (while dubugging) item.Category=1
// (while dubugging) item.Foo=20
// (while dubugging) item.Bar="This is bar"
有一种简单的方法可以自动执行此操作吗?或者我是否必须为所有场景/所有成员创建不同的映射?
谢谢,