0

我遇到了最奇怪的问题,我从 EF 获取一个对象并将其传递回业务逻辑进行操作,完成后我试图将对象保存回数据库,当对象被传递到以下方法时,它是 EntityState已修改,但只要附加代码行运行,它就会设置为 UnChanged,因此保存将不起作用。

有谁知道为什么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();
            }
        }
    }
4

2 回答 2

1

由于实体更改跟踪封装在 Context 中,因此实体在脱离上下文时自然会丢失状态和其他跟踪内容。

于 2012-04-13T12:14:32.407 回答
0

好的,我在这里找到了问题的解决方案,但我对解释更感兴趣,为什么 EF 会这样做,似乎非常适得其反!?

http://geekswithblogs.net/michelotti/archive/2009/11/27/attaching-modified-entities-in-ef-4.aspx

于 2012-04-13T07:19:32.737 回答