如何使用存根实体检测实体是否已附加

时间:2009-10-27 18:35:48

标签: entity-framework

我想使用存根实体,但似乎我不能在没有完整实体的情况下使用TryGetObjectStateEntry?有没有办法用存根实体或任何其他方式来检测实体是否已经附加?如果我尝试连接两次相同的实体,AttachTo将抛出InvalidOperationException。我想保存命中数据库。这是我的代码;

    // Stub entities don't work with TryGetObjectStateEntry, need a full entity?
    // product = new Product { ProductID = item.ProductID };
    // Full entity from the DB works fine
    product = ctx.Products.First(i => i.ProductID == item.ProductID);
    ObjectStateEntry entry = null;
    if(!ctx.ObjectStateManager.TryGetObjectStateEntry(product.EntityKey, out entry))
    {
         ctx.AttachTo("Products", product);
    }
    newItem.Product = product;   

1 个答案:

答案 0 :(得分:2)

只需设置Reference的EntityKey,而不是使用存根实体。这总是有效的,只要您不需要取消引用相关值。既然你使用存根,我想你不会。

newItem.ProductReference.EntityKey = 
    new EntityKey("MyEntityContextName.Products", "ProductID", item.ProductID);

显然,将“MyEntityContextName”替换为您的上下文的实际名称。