我想使用存根实体,但似乎我不能在没有完整实体的情况下使用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;
答案 0 :(得分:2)
只需设置Reference的EntityKey,而不是使用存根实体。这总是有效的,只要您不需要取消引用相关值。既然你使用存根,我想你不会。
newItem.ProductReference.EntityKey =
new EntityKey("MyEntityContextName.Products", "ProductID", item.ProductID);
显然,将“MyEntityContextName”替换为您的上下文的实际名称。