【问题标题】:DbContext.Entry attaching EntityDbContext.Entry 附加实体
【发布时间】:2012-10-11 03:55:00
【问题描述】:

根据我的研究,我了解到调用 DbContext.Entry(someEntity) 会自动将实体附加到上下文。

但是,当我这样做时,我发现实体的状态是分离的。

谁能对此以及 DbContect.Entry 的工作原理有所了解。我正在使用 EF 5.0

谢谢。

【问题讨论】:

    标签: entity-framework entity-framework-5 dbcontext


    【解决方案1】:

    如果你想附加一个对象,你真正想要的是DbSet.Attach。 DbContext.Entry 仅向您提供有关实体的信息,并允许您更改已附加的状态。

    这是来自 MSDN 的关于实体状态的 good post

    【讨论】:

      【解决方案2】:

      由于@Mark Oreta 的回答不完整:

      按照他发布的link 并阅读整篇文章揭示了一些不同的信息:因此,如果您设置所需的相关 EntityState,则 DbContext.Entry(someEntity) 实际上是将实体附加到上下文。

      要附加修改或添加的实体,您可以这样做:

      using(var yourDbContext = new YourDbContext())
      {
          yourDbContext.Entry(yourEntity).State =
              yourEntity.ID == 0 ?
                  System.Data.Entity.EntityState.Added :
                  System.Data.Entity.EntityState.Modified;
      }
      

      要附加未修改的实体,您可以这样做:

      using(var yourDbContext = new YourDbContext())
      {
          yourDbContext.Entry(yourEntity).State = System.Data.Entity.EntityState.Unchanged;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-14
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 2017-10-31
        • 1970-01-01
        相关资源
        最近更新 更多