Include()方法适用于对象列表.但是,如果我需要深入两个级别呢?例如,下面的方法将返回ApplicationServers,其中包含此处显示的包含属性.但是,ApplicationsWithOverrideGroup是另一个容纳其他复杂对象的容器.我也可以在该属性上执行Include()吗?或者我如何才能完全加载该属性?
现在看来,这个方法:
public IEnumerable<ApplicationServer> GetAll()
{
return this.Database.ApplicationServers
.Include(x => x.ApplicationsWithOverrideGroup)
.Include(x => x.ApplicationWithGroupToForceInstallList)
.Include(x => x.CustomVariableGroups)
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
将仅填充Enabled属性(下方),而不填充Application或CustomVariableGroup属性(如下所示).我该如何实现这一目标?
public class ApplicationWithOverrideVariableGroup : EntityBase
{
public bool Enabled { get; set; }
public Application Application { get; set; }
public CustomVariableGroup CustomVariableGroup { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我如何包括孩子的孩子?
即,乔布斯有引用具有QuoteItems
var job = db.Jobs
.Where(x => x.JobID == id)
.Include(x => x.Quotes)
.Include(x => x.Quotes.QuoteItems) // This doesn't work
.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
为了更清楚 - 我正在尝试检索单个作业项目,并且它是关联的报价(一对多)和每个报价相关的QuoteItems(一个报价可以有许多QuoteItems)
我问的原因是因为在我的报价索引视图中,我试图通过SUMming小计显示每个报价的所有报价项目的总和,但是它出现为0.我正在调用这样的小计:
@item.QuoteItem.Sum(p => p.Subtotal)
Run Code Online (Sandbox Code Playgroud)
我相信我遇到这个问题的原因是我上面的Linq查询没有检索每个Quote的相关QuoteItems.
我正在尝试以一对多关系连接两个对象,Workplace 可以容纳多个 People,而一个 Person 只能拥有一个 Workplace。
当我执行此代码片段并检查结果时,p1 已正确将 w1 指定为 p1.Workplace,但 w1.employees 的人员列表始终为空。
即使我将 w1 分配给 p1.Workplace 之后,是否还必须手动将 p1 添加到 w1.Employees 中?
SeedData.cs(代码片段)
var w1 = new Workplace
{
EntryCode = "1111"
//[...] other data I cut out for brievity
};
context.Workplaces.Add(w1);
Person p1 = new Person
{
Name = "Spencer",
Workplace = w1
//[...] other data I cut out for brievity
};
context.Person.Add(p1)
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
工作场所.cs
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace Counsel.Models
{
[Table("Workplace")]
public class Workplace
{
[Column("WorkplaceId")] …Run Code Online (Sandbox Code Playgroud)