【问题标题】:EF4 - Context.Entry isn't available to change an Entity StateEF4 - Context.Entry 不可用于更改实体状态
【发布时间】:2012-02-22 16:36:21
【问题描述】:

我使用 EDMX 模式作为我的上下文。在我之前没有使用架构的项目中,我可以像这样更改实体状态:

public void SaveProduct(Product product)
{
    if (product.ProductID == 0)
        context.Products.Add(product);
    else
        context.Entry(product).State = EntityState.Modified;
    context.SaveChanges();
}

但在这个项目中,我在智能感知中没有看到 .Entry(如果我只是输入它,它不会建议命名空间引用)。

我尝试修改实体并将其保存。它工作正常。

所以我的两个问题是: - 为什么.Entry 不在我的智能感知中了? - 我们真的需要使用持久的 Context 来更改实体状态,还是可以依靠 .Net 来正确地做到这一点?

【问题讨论】:

    标签: c# .net entity-framework entity-framework-4


    【解决方案1】:

    我猜您之前使用的是 DbContext API,但现在您使用的是 ObjectContext API - 这是使用 EF 的两种不同方法,并且每种方法都有自己的方法。检查你是否有这个(ObjectContext API):

    context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified);
    

    关于您的第二个问题 - 如果您正在处理分离的场景,您需要附加实体并设置状态(您的实体实例不是由保存时相同的上下文实例加载)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2016-03-25
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多