微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 实体框架6 – 仅使用引用不同表的主键的表

当我们离开 Linq2sql时,我们正在学习Entity Framework 6.1(从NuGet).我们有一小撮桌子,可以连接两个独立的桌子,如下所示.

EF6数据库第一代

DB图:

模式概述:

当在Visual工作室,空白类库中,做一个Database First EF6 EDMX文件时,该图只生成TableA和TableC – 不会生成TableB.

视觉工作室视图:

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

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

我觉得我错过了一个选择,或者误解了实体框架的一个关键概念.任何想法如何使用T4生成的缺少的TableB? EDMX文件显示它,但由于某些原因,它不会生成到.CS文件中,其中两个属性指示关系.

我们需要的主要原因是扩展了EF6 T4模板,以添加一些工厂模式来匹配我们现有的模型.因为它没有为TableB生成一个类,所以我们不会得到我们正在寻找的自动生成代码.

想法/建议?谢谢.

解决方法

EF不会生成弱实体或连接表,您需要通过流畅的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.

有关更多信息,请参阅此link

更新

如果EDMX(但是维护成本),解决方法将适用于以下情况:

>从数据库中的连接表中删除外键
>从数据库更新EDMX
>在连接表中重新创建外键

只要您不再从数据库更新您的模型,此解决方法将会起作用.

推荐的解决方案,保留EDMX生成的所有内容,并使用用户“@TravisWhidden”报告“有帮助”的以下链接,详细了解如何使用crud操作

> stackoverflow.com/questions/425316
> https://www.youtube.com/watch?v=uMQwORSTGX4(视频)

原文地址:https://www.jb51.cc/csharp/95183.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐