我遇到了最奇怪的问题,我从EF获取了一个对象并将其传递给Business Logic进行操作,完成后我试图将对象保存回DB,当对象传递给以下内容时方法它的EntityState是Modified,但是一旦运行了附加的代码行,它就被设置为UnChanged,因此Save将不起作用。
有谁知道为什么EF会这样做?
public void Save(IEntity entity)
{
using (var context = new eDocumentEntities())
{
using (var scope = new TransactionScope())
{
if (entity.Id != 0)
context.AttachTo(entity.EntitySet, entity);
else
context.AddObject(entity.EntitySet, entity);
context.SaveChanges();
scope.Complete();
}
}
}
答案 0 :(得分:1)
由于实体更改跟踪被封装在Context中,当实体与上下文分离时,实体自然会丢失状态和其他跟踪内容。
答案 1 :(得分:0)
好的,我在这里找到了问题的解决方案,但是我对解释更感兴趣,为什么EF这样做,看起来效率很高!?
http://geekswithblogs.net/michelotti/archive/2009/11/27/attaching-modified-entities-in-ef-4.aspx