2009-10-27 46 views
1

我想使用存根實體,但似乎我不能使用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; 

回答

2

只需設置引用的EntityKey而不是使用存根實體。只要你不需要解除相關的價值,那總是有效的。既然你使用存根,我猜你不會。

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

顯然,將「MyEntityContextName」替換爲您的上下文的實際名稱。

+0

我想標記這是我的問題的答案,但我不知道你在暗示什麼。對不起,太蠢了! – DaveB 2009-10-29 05:35:50

+0

我添加了一個代碼示例。 – 2009-10-29 12:41:50

相關問題