[英]linq to sql loading children on one to many relationship
我有3张桌子。 突发事件,根本原因和突发事件根本原因。 表格eventrootcauses与“事件”是一对多关联的。 当我得到事件对象时,没有一个我期望的根本原因对象列表,而是我得到了(在我的即时窗口中)
var rt = incident.IncidentRootCauses;
{System.Data.Linq.EntitySet}计数:1
HasLoadedOrAssignedValues: true
IsDeferred: false
我希望能够在查询运行时加载所有rootcause对象。 我知道问题是事件没有明确地与rootcause表绑定。 感谢您对此的任何帮助。
using (var db = new IncidentTrackerDataContext())
{
var lo = new DataLoadOptions();
lo.LoadWith<Incident>(incidents => incidents.ReportedTo);
lo.LoadWith<Incident>(incidents => incidents.Shift);
lo.LoadWith<Incident>(incidents => incidents.Machine);
lo.LoadWith<Incident>(incidents => incidents.Department);
lo.LoadWith<Incident>(incidents => incidents.IncidentRootCauses);
lo.LoadWith<IncidentRootCause>(i => i.RootCause);
// lo.LoadWith<Incident>(incidents => incidents.IncidentManagers);
// lo.LoadWith<Incident>(incidents => incidents.IncidentMembers);
// lo.LoadWith<Incident>(incidents => incidents.IncidentWitnesses);
db.LoadOptions = lo;
db.DeferredLoadingEnabled = false;
Incident incident = (from i in db.Incidents
where i.IncidentReportID == new Guid(incidentID)
select i).FirstOrDefault();
return incident;
}
听起来您还想要第二层渴望的实体。
在相同的LoadOptions上,尝试:
lo.LoadWith<IncidentRootCause>(irc => irc.RootCause);
您可能要检查生成的SQL。 尝试加载多个子级时,某些带有选项的加载可能会被忽略,因为这可能意味着提取过多的记录。 结果,直到退出using子句后,某些子记录才可能被拉出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.