2011-01-26 59 views
1

我是新手:關係數據庫,SQL和實體。如果我不使用正確的術語,請原諒我。如何允許關聯同一對象實體框架的多個實例?

我想要做的是將同一行與另一行關聯兩次。

IE:

交易與項目有多對多的關係。

所以我乾脆:

internal static void AddItem(int itemID, Transaction transaction) 
    { 
     Item item = (from i in db.Items 
        where i.Id == itemID 
        select i).SingleOrDefault(); 

     transaction.Items.Add(item); 
     db.SaveChanges(); 
    } 

的問題是,我不能添加同一項目兩次(說,如果一個人買了兩個相同的項目)。我確信有一些明顯的原因是超出了我的,但我不知道這個通用數據庫概念通常如何處理。

回答

1

這可能涉及重新考慮數據模型。也許有一個Purchase包含多個Items不一定是要走的路,即使它在關係模型中被定義爲多對多也是如此。此時,維護多對多關係的中間表本身正成爲一個要使用和跟蹤的業務實體。

「PurchaseItem」現在是Purchase中涉及的Item的單個實例,除了Item之外,它還有其自己的數據和相關性。它是給定採購中的一個行項目,獨立於自身,並且僅返回到正在購買的物料。因此,購買將需要一個PurchaseItems列表,而不是一個Items列表。

+0

我有一種感覺,中間表可能是正確的方法來做到這一點,但我不確定。感謝您的快速回答。 – 2011-01-26 20:58:14