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

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


但是所有Product都具有Components的集合,并且我想绑定例如位于索引2上Components中的集合Product。(表Product中的产品“蛋糕”具有Component “ suqar”,“盐”,“面粉”)。我该怎么做?我试图通过索引获取Product,但是它不起作用。也许这是一个愚蠢的问题,对不起,请帮助。

最佳答案

为什么您不能从产品->组件1xProduct->许多组件建立直接关系。为什么需要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();

关于c# - 如何使用 Entity Framework 获取ms sql db中的现有项目的集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14891042/

10-12 12:44
查看更多