【发布时间】:2017-05-30 06:15:52
【问题描述】:
我目前正在使用 EF 数据库优先方法创建一个 MVC / AngularJS 应用程序。实现我的数据库后,我意识到我无法使用 Database-First 方法引用多对多关系。
例如,Table1 通过名为Table3 的第三个表与Table2 具有多对多关系。 Table3 包含两个主键:Table1 的 PK 和 Table2 的 PK。更新我的 EDMX 模型,我仍然无法添加这个表,这是有道理的,因为它只是一个多对多关系,并且这个属性应该在 Table1 类模型和 Table2 类上设置。
问题
使用 AngularJS 作为我的前端,我需要将从数据库中检索的数据转换为 HttpResponse (IHttpActionResult)。我以前遇到过这样的问题(使用代码优先)并且只是禁用了延迟加载(从我的 EMDX 模型类的属性中删除了virtual 关键字)。
禁用延迟加载后,我似乎无法包含该关系。这是我的意思的一个例子:
from t1 in _context.Table1.Include(x => x.Table2)
Table2 引用根本不包括在内,因此 Icollection<Table2> 只是空值。
这是否与我从我的属性中删除 virtual 关键字有关,或者这两者的映射出了什么问题?
【问题讨论】:
-
您需要加入表。见 msdn:code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
-
但我不能。我有三个表,其中 2 个包含在我的模型中,但最后一个表没有,它包含关系,因为它是多对多的。我很确定我不能像这样加入,除非你能给我举个例子吗?
-
请在 SO 上发布问题之前做一些研究。有很多例子可以做很多,其中很少 - 1)entityframeworktutorial.net/code-first/… 2)stackoverflow.com/questions/19342908/… 3)stackoverflow.com/questions/5434125/…
-
@brainlesscoder 也许您应该先阅读我的问题。您提供的所有链接都与代码优先有关。我特别提到我的是 DB-first。我毫不怀疑如何在代码优先中创建多对多,但这也不是我的问题。
-
@Detilium 在这种情况下试试这个 - stackoverflow.com/questions/35527175/…
标签: c# sql-server asp.net-mvc entity-framework linq