实体框架6-缺少仅具有引用不同表的主键的表 [英] Entity Framework 6 - Missing table with only primary keys referencing different tables

查看:89
本文介绍了实体框架6-缺少仅具有引用不同表的主键的表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

随着我们离开Linq2Sql,我们正在学习Entity Framework 6.1(从NuGet)。我们有少量的表将两个独立的表相关联,如下所示。

We are learning Entity Framework 6.1 (from NuGet) as we move away from Linq2Sql. We have a small handful of tables that associate two separate tables like shown below.

EF6数据库第一代

数据库图:

模式概述:

在Visual Studio中,空白类库在执行Database First EF6 EDMX文件时,该图仅生成TableA和TableC -不会生成TableB。

When in Visual studios, blank class library, doing a Database First EF6 EDMX file, the diagram only generates TableA and TableC -- the TableB does not get generated.

Visual Studios视图:

Visual Studios View:

您可以看到仅创建了TableA和TableC。从技术上讲,应该已经创建了TableB,因为您希望能够管理那些引用。

You can see that only TableA and TableC are created. Technically TableB should have been created, because you would want to be able to manage those references.

图中所示的A和C之间的关联:

The Association between A and C shown in the diagram:

我觉得我错过了一个选择,或者误解了一个关键概念实体框架。知道如何用T4生成丢失的TableB吗? EDMX文件确实显示了它,但是由于某种原因,它没有生成为具有两个表示关系的属性的.CS文件。

I feel like I am missing an option, or misunderstanding a key concept of Entity Framework. Any idea how to have the missing TableB generated with the T4? The EDMX file does show it, but for some reason it doesn't get generated into a .CS file with the two properties indicating the relationship.

我们需要的主要原因这是我们扩展了EF6 T4模板以添加一些工厂模式以匹配我们现有的模型。因为它不会为TableB生成类,所以我们无法获取所需的自动生成的代码。

The primary reason we need this, is we extended the EF6 T4 template to add some factory patterns to match our existing models. Because it doesnt generate a class for TableB, we dont get the autogenerated code that we are looking for.

想法/建议?谢谢。

推荐答案

EF不会生成弱实体或联接表,您需要通过流利的API手动配置关系或使用数据注释

Weak entities or join tables will not be generated by EF, you need to configure the relationships manually thru fluent API or using data annotations

如微软网站上所述:根据Relationship的约定:

As stated on Microsoft's website: under Relationship's convention:


注意:如果在相同类型之间有多个关系(例如,对于
,假设您定义 Person Book 类,其中
Person 类包含 ReviewedBooks AuthoredBooks 导航
属性和 Book 类包含 Author Reviewer
导航属性),则需要使用数据注释或流利的API手动配置
关系。有关
的更多信息,请参见数据注释-关系和Fluent API-
关系。

Note: If you have multiple relationships between the same types (for example, suppose you define the Person and Book classes, where the Person class contains the ReviewedBooks and AuthoredBooks navigation properties and the Book class contains the Author and Reviewer navigation properties) you need to manually configure the relationships by using Data Annotations or the fluent API. For more information, see Data Annotations - Relationships and Fluent API - Relationships.

请参阅此< a href = https://msdn.microsoft.com/zh-cn/data/jj679962.aspx rel = nofollow noreferrer>链接以获取更多信息

Refer to this link for more information

已更新

在EDMX的情况下,一种变通方法将起作用(但维护成本):

A workaround will work in case of EDMX ( but it cost maintenance) as follows:


  1. 从数据库的联接表中删除外键

  2. 从数据库中更新EDMX

  3. 在连接表中重新创建外键

只要您不从

推荐的解决方案,保留一切由EDMX生成的内容,并使用以下报告为有帮助的链接,详细了解如何在这种情况下使用Crud操作由用户'@TravisWhidden'

Recommended solution, keep everything as it was generated by EDMX and learn more about how to use crud operation for this case using the following links that were reported "helpful" by the user '@TravisWhidden'


  1. 插入/更新多对多实体框架。我该怎么办?

  2. https ://www.youtube.com/watch?v = uMQwORSTGX4 (视频)

  1. Insert/Update Many to Many Entity Framework . How do I do it?
  2. https://www.youtube.com/watch?v=uMQwORSTGX4 ( video)

这篇关于实体框架6-缺少仅具有引用不同表的主键的表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆