2

我刚刚开始探索实体框架,它真的很棒!但现在我有疑问。在我的数据库“产品”中,我有表的产品、组件、产品组件(它是多对多连接)。我在我的 c# 项目中创建了一个 .edmx 文件并选择了这 3 个表。现在,我可以在表格的列表框项目中看到,例如,我可以看到 Products 表的所有行使用

ProductsEntities db = new ProductsEntities();
LstBox.ItemsSource = db.Product;

但是所有的Product都有集合Components,我想绑定例如索引2中的集合。(表中的产品“cake”Components有s “suqar”、“salt”、“flour”)。我怎么能做这个东西?我试图按索引获取,但它不起作用。也许这是一个愚蠢的问题,对不起,但请帮忙。ProductProductComponentProduct

4

1 回答 1

3

为什么你不能从 Product --> Component 1xProduct-->Many Components 建立直接关系。为什么需要Product_Component. 如果你会像我说的那样做,你可以很容易地得到你想要的东西:

db.Products.First(e=>e.Id==2).Components.ToList();

将获得 id = 2 的产品组件列表;

编辑:

像这样使用

List<Component> components = new List<Component>();
db.Products.First(e=>e.Id==2).Product_Components.ToList().ForEach(e=>components.Add(e.Component));

向产品添加新组件:

Product someProduct = db.Product.First(e=>e.Name=="coolProduct")
Component component = db.Component.First(e=>e.Name=="Fish");
someProduct.Product_Component.Add(new Product_Component(){Component=component...});
db.SaveChanges();

向产品添加新组件的新方法:

Product someProduct = db.Product.First(e=>e.Name=="coolProduct")
Component component = db.Component.First(e=>e.Name=="Fish");
Component_Product component_product = new Component_Product(){Component = component, Product = product};
db.SaveChanges();

新-新解决方案:

Product someProduct = db.Product.First(e=>e.Name=="coolProduct")
Component component = db.Component.First(e=>e.Name=="Fish");
Component_Product component_product = new Component_Product(){Component = component, Product = product};
db.Component_Product.Add(component_product);
db.SaveChanges();
于 2013-02-15T08:58:26.883 回答