Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取现有项目';s集合,该集合位于ms sql db中,使用实体框架_C#_Sql_Entity Framework - Fatal编程技术网

C# 如何获取现有项目';s集合,该集合位于ms sql db中,使用实体框架

C# 如何获取现有项目';s集合,该集合位于ms sql db中,使用实体框架,c#,sql,entity-framework,C#,Sql,Entity Framework,我刚刚开始探索实体框架,它真的很棒!但现在我有个问题。在我的db“Products”中,我有表的Product、Component、Product_Component(它是多对多连接)。我在我的c#项目中创建了一个.edmx文件,并选择了这3个表。现在,我可以在列表框中查看表的项目,例如,我可以使用 ProductsEntities db = new ProductsEntities(); LstBox.ItemsSource = db.Product; 但是所有的产品都有组件的集合,我想绑定

我刚刚开始探索实体框架,它真的很棒!但现在我有个问题。在我的db“Products”中,我有表的Product、Component、Product_Component(它是多对多连接)。我在我的c#项目中创建了一个.edmx文件,并选择了这3个表。现在,我可以在列表框中查看表的项目,例如,我可以使用

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

但是所有的
产品
都有
组件的集合
,我想绑定例如集合
组件
,它们位于索引2中我的
产品
中。(表
产品中的产品“蛋糕”含有
成分
s“苏卡尔”、“盐”、“面粉”)。我怎么做这个东西?我试图通过索引获取
产品
,但它不起作用。也许这是个愚蠢的问题,对不起,但请帮帮我。

为什么不能从产品-->组件1xProduct-->许多组件建立直接关系。为什么需要
产品组件
。如果你愿意像我说的那样做,你很容易就能得到你想要的:

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();

谢谢,它很管用!我有Product_Component表,因为昨天我试着使用ADO.NET,今天我看到了实体框架。实际上你有一个正确的BD结构,一开始我错了。查看我在
编辑后添加的内容:
现在它不起作用了(说明
db.Product.First(e1=>e1.id==2).Product\u组件。
没有
ForEach
的定义(对不起,我的错。它应该是:db.Products.First(e=>e.id==2).Product\u Components.ToList().ForEach(e=>Components.Add(e.Component));谢谢,很好用!如果我想在产品中添加一个组件,我必须先使用
db.product.First(e1=>e1.id==4).product\u component.add(
,但它需要
产品组件
而不是
组件
)。我如何添加
组件