2009-01-27 45 views
0

讓我描述的行爲,我得到:實體框架AddTo函數不一致?

  • 負載從數據庫中的用戶:這意味着用戶被附加到上下文
  • 創建新的對象C:
    • ÇtempC =新C();
    • tempC.User =先前加載的用戶;
    • Context.AddToCSet(tempC);
    • 最後一行引發異常,因爲當設置屬性用戶時,該對象已添加到上下文中。

但如果我做到以下幾點:

  • 負載從數據庫中的用戶:這意味着用戶被附加到上下文
  • 創建新的對象C:
    • C tempC = new C();
    • tempC.User =先前加載的用戶;
    • Context.SaveChange();
  • 創建具有與對象C.
    • Ê坦佩=全新E的關係的新對象E();
    • tempE.C =先前創建的C;
    • Context.AddToESet(tempE);

拋出異常。我期待着一個例外,因爲那時C被附加到上下文中,這應該與第一個例子相同。但事實並非如此。爲什麼,我能做些什麼來保持一致性?

我打算在將它添加到集合之前檢查對象的狀態(EntityState == Detached),但我想我一定是做錯了開始。

+0

不知道,但一些代碼顯示你在做什麼可以幫助這裏。 – Odd 2009-01-28 00:56:49

回答

0

假設有一個1到許多UserC之間的關係,你可能需要使用不同的語法爲C添加到父User。而不是tempC.User = previously loaded user;您可能想要將tempC作爲User的子項添加。這是我的意思:

C tempC = new C(); 
(previously created user).C.Add(tempC); 
Context.AddToCSet(tempC);