【发布时间】:2014-02-28 12:19:37
【问题描述】:
我在尝试更新具有我在前端不关心的关系的实体时遇到了一个烦人的问题。 问题是,当自动映射器创建我的项目时,默认构造函数将关系设置为一个空列表(应该为空),这在 EF 尝试保存它时会导致问题,因为现在它认为它应该删除现有实体的关系。
我认为这是许多人都遇到过的问题,但谷歌似乎并不这么认为。我是否以错误的方式处理这个问题?从 DTO 映射到实体模型时如何维护实体关系?
类
// normal code first POCO class
public class Item
{
public Item()
{
Others = new List<Other>();
}
public int Id {get; set;}
public virtual ICollection<Other> Others {get; set;}
}
// my DTO
public class ItemDTO
{
public int Id {get; set;}
}
控制器动作
[HttpPost]
public void PostAction(ItemDTO dto)
{
var item = Mapper.Map<Item>(dto);
// The problem here is that item.Others.Count is 0, should be null
// so EF thinks it needs to delete the relationships
_repo.Update(item);
}
【问题讨论】:
标签: c# asp.net-mvc entity-framework automapper dto