MVC 多对多仅在代码中首先获取具有某种类型的实体
Posted
技术标签:
【中文标题】MVC 多对多仅在代码中首先获取具有某种类型的实体【英文标题】:MVC many to many get entities with of certain type only in code first 【发布时间】:2018-12-28 10:14:03 【问题描述】:Company 和 CompanyType 之间存在多对多关系
我想获取仅包含 CompanyType.Name 为“Client”的公司的下拉列表。 IE。一个客户公司列表。
如何在 linq 中做到这一点?
我基本上想在 linq 中执行以下操作
var clientCompanies = db.Companies.SqlQuery(@"SELECT c.*
FROM Companies AS c
JOIN CompanyTypeCompanies AS ctc ON ctc.Company_ID = c.ID
JOIN CompanyTypes AS ct ON ctc.CompanyType_ID = ct.ID
WHERE ct.Name = 'Client'").ToList();
【问题讨论】:
【参考方案1】:如果表之间有适当的外键关系,则可以使用 include 语句
var clientCompanies = db.CompanyTypes
.Where(ct => ct.Name == "Client").Include(ct => ct.CompanyTypeCompanies).Include(ct => ct.Companies).Select(ct => ct.Companies).ToList();
在启动类中
public void ConfigureServices(IServiceCollection services)
...
services.AddMvc()
.AddJsonOptions(
options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
);
...
【讨论】:
以上是关于MVC 多对多仅在代码中首先获取具有某种类型的实体的主要内容,如果未能解决你的问题,请参考以下文章