如何允许关联同一对象实体框架的多个实例?

时间:2011-01-26 20:30:39

标签: c# entity-framework relational-database

我是新手:关系数据库,SQL和实体。如果我没有使用正确的术语,请原谅我。

我想要做的是将同一行与另一行相关联,两次。

IE:

交易与Item有多对多的关系。

所以我只是:

    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 个答案:

答案 0 :(得分:1)

这可能涉及重新思考数据模型。也许购买包含多个项目不一定是可行的方法,即使它在关系模型中被定义为多对多。此时,保持多对多关系的中间表本身就成为要使用和跟踪的业务实体。

“PurchaseItem”现在是Purchase中涉及的Item的单个实例,除了Item之外还有自己的数据和相关性。它是给定购买的订单项,独立且独一无二,仅返回到正在购买的商品。因此,购买需要一个PurchaseItems列表而不是一个Items列表。