【问题标题】:How to refresh and entity object after a newly created object context如何在新创建的对象上下文后刷新和实体对象
【发布时间】:2013-01-17 13:57:31
【问题描述】:

可以说,我有一个名为 someProductEntityObject

//Get the object
Product someProduct = someObjectContext.Product.First();

//At runtime at some point, recreate the ObjectContext
someObjectContext = new SomeObjectContext();

//Try to refresh someProduct on the new ObjectContext
someObjectContext.Refresh(RefreshMode.StoreWins, someProduct);

第三行执行时,抛出异常:

要刷新的对象集合中索引为 0 的元素的 EntityKey 属性值为空或未附加到此 ObjectStateManager。

这是在新创建的ObjectContext 上刷新EntityObject 的正确方法吗?

编辑:

ObjectContext的原因是为了刷新所有脏的EntityObjects

【问题讨论】:

    标签: c# .net entity-framework


    【解决方案1】:

    刷新前先将实体附加到上下文,

    someObjectContext.Products.Attach(someProduct);
    

    someObjectContext.Set<Product>().Attach(someProduct);
    

    应该可以的。

    【讨论】:

      【解决方案2】:

      由于 someProduct 是使用不同的 ObjectContext 检索的,因此您需要使用 someObjectContext.Attach(someProduct)

      refresh用于刷新ObjectContext的缓存,需要从同一个ObjectContext中选择一个实体。

      祝你好运

      【讨论】:

        【解决方案3】:

        您应该将某些产品附加到对象,然后只有您可以刷新对象。

        此刷新用于刷新之前创建的与对象内容相关的缓存。

        我在项目中使用了以下代码。它工作正常。

        objectContext.attach(someProduct);

        【讨论】:

          猜你喜欢
          • 2016-11-11
          • 1970-01-01
          • 1970-01-01
          • 2019-03-19
          • 2015-03-24
          • 2012-04-14
          • 2011-02-02
          • 1970-01-01
          相关资源
          最近更新 更多