实体框架多对多,在连接表上有附加字段

时间:2009-11-24 02:19:36

标签: c# linq-to-sql entity-framework linq-to-entities many-to-many

我有一个包含三个表的实体上下文。第一个是包含产品的表,第二个包含食谱。连接表包含产品和配方表中ID的字段以及称为“特色”的“位”字段。

我已经搜索过,并没有找到关于如何仅插入如何针对此类场景进行选择的示例。是否有人对如何做到这一点有任何建议?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我暂时没有做C#,所以我不确定我的语法是否有效,无论如何这应该是这个想法:

Products product = new Products { Blah, Blah, Blah };

bool flag = false;
for (int i = 0; i < 5; i++)
{
    Products_Receipes pr = new Products_Receipes 
                                  { Products = product, IsFeatued = flag };
    pr.Receipes.Add(new Receipes()); 
    pr.Receipes.Add(new Receipes());
    flag = !flag;
}
Context.SaveChanges();

如果上述方法不起作用,那么让我告诉您必须创建主要项目(产品或食谱),然后在创建Products_Receipes时设置它Products / Receipes属性到上面(或Products.Pruducts_Receipes.Add(pr)),然后以相同的方式添加关系的另一面。

答案 1 :(得分:0)

观察结果是,您的图表的结构更像是数据库架构,而不是实体图。实体的设计应满足独立于数据存储结构的业务需求,以便您可以使用任何数据库来存储数据。

我相信您可以删除“链接”实体,并在产品和食谱之间设置一对多或多对多关联。然后使用链接表设置数据库模式并相应地执行表映射。