Entity framework EF4.0中缺少多对多链接表是错误还是功能?

Entity framework EF4.0中缺少多对多链接表是错误还是功能?,entity-framework,Entity Framework,我有一个评论和一个问题。Entity Framework 4.0不会在两个表之间的多对多关系中显示链接表,如Northwind中所示的“Order_Details”,即订单和产品之间的链接表,前提是链接表中只使用了两列,这两列都是主键,这是常有的情况。因此,在Northwind中,如果在订单和产品之间的订单详情链接表中同时使用OrderID和ProductID作为主键,对于多对多关系,如果订单详情中仅存在这两列(主键),链接表将不会显示 因此,您无法在多对多关系链接表中插入或创建,因为Entit

我有一个评论和一个问题。Entity Framework 4.0不会在两个表之间的多对多关系中显示链接表,如Northwind中所示的“Order_Details”,即订单和产品之间的链接表,前提是链接表中只使用了两列,这两列都是主键,这是常有的情况。因此,在Northwind中,如果在订单和产品之间的订单详情链接表中同时使用OrderID和ProductID作为主键,对于多对多关系,如果订单详情中仅存在这两列(主键),链接表将不会显示

因此,您无法在多对多关系链接表中插入或创建,因为Entity Framework 4.0既不显示链接表顺序的详细信息,也不显示多对多关系的链接表。如果EF 4没有显示隐藏的链接表,那么如何在链接表中插入或更新?像“你现在必须开始用面向对象的方法思考”这样的论点并没有给我留下深刻的印象。SQL有一定的结构,OOP只是它的一个接口,因此我们可以使用LINQ来访问实体,而不是使用更笨拙的SQL查询IMO

Silverlight在这里提出了绕过此错误的技巧,它适用于web服务和任何其他.NET解决方案:只需在链接表中添加任何类型的伪列即可

现在删除原始的.edmx文件,并根据实际数据库生成一个新文件

然后intellisense显示链接表,然后您可以插入/创建并执行其他正常操作

例如,EF 4.0中的Intellisense现在将显示链接表Order_详细信息,您可以创建或插入(部分片段,省略try/catch和任何回滚选项):


问题:缺少显示多对多链接表是EF 4.0的一个缺陷还是一个功能?

我个人认为,如果链接表中没有除两个键以外的任何其他列,则不需要该链接表。我从来不需要访问链接表,它只是用来定义M2M关系。通过首先获取
Foo
(或
Bar
)并使用
Foo.Bar.Add(sampleBar)
,我可以轻松地添加
Foo
Bar
之间的关系


我想你回答了你的问题。如果你认为OOP,这是一个特性。如果您想访问链接表(并且您认为这样做是正确的),这是一个缺乏功能的地方

我个人认为,如果链接表中除了两个键之外没有任何其他列,那么就不需要链接表。我从来不需要访问链接表,它只是用来定义M2M关系。通过首先获取
Foo
(或
Bar
)并使用
Foo.Bar.Add(sampleBar)
,我可以轻松地添加
Foo
Bar
之间的关系

我想你回答了你的问题。如果你认为OOP,这是一个特性。如果您想访问链接表(并且您认为这样做是正确的),这是一个缺乏功能的地方

           using (aDBEntity context = new aDBEntity())
               Order_Details newOrdDetails = new Order_Details();
        newOrdDetails.OrderID = //some number here
        newOrdDetails.ProductID = //some number here

               context.AddToOrder_Details(newOrdDetails);
               context.SaveChanges();