【发布时间】:2016-08-26 04:34:06
【问题描述】:
我正在使用 Entity Frameowrk 7,并使用以下 LINQ 查询将数据选择到数据传输对象 (DTO) 中。要从导航属性中选择数据,我使用Include 来启用指定属性的预加载。该表当前有两行,但响应以下查询只返回其中一行:
var jobs = context.CorepJobs
.Include(j => j.CompanyNavigation)
.Include(j => j.WellNavigation.FieldNavigation)
.Select(j =>
new CorepJobDTO()
{
Id = j.Id,
Created = j.Created,
DepthAsFeet = j.DepthAsFeet,
JobType = j.JobType,
State = j.State,
ProjectNo = j.ProjectNo,
CompanyName = j.CompanyNavigation.CompanyName,
WellName = j.WellNavigation.Name,
FieldName = j.WellNavigation.FieldNavigation.Name
}
).AsEnumerable();
如果某些属性是null,我希望查询用null 填充DTO 的相应属性。相反,如果FieldNavigation 属性为null,则会跳过整行,只返回两行中的一个。如果我省略了 Select 块中的最后一个属性 (FieldName),则会返回两行。
我也试过
FieldName = j.WellNavigation.FieldNavigation != null =? j.WellNavigation.FieldNavigation.Name : ""
运气不好。
对我可能做错的任何想法?
【问题讨论】:
-
不错的发现!一定是这样的。
标签: c# linq entity-framework-core