1

我有 3 张桌子。事件、根本原因和事件根本原因。表incidentrootcauses 以一对多的方式与事件相关联。当我得到事件对象时,没有我预期的根本原因对象列表,而是得到(在我的即时窗口中)

var rt = incident.IncidentRootCauses;

{System.Data.Linq.EntitySet} 计数:1

HasLoadedOrAssignedValues: true

IsDeferred: false

我希望能够在查询运行时加载所有根本原因对象。我知道问题是事件没有明确地与根本原因表相关联。感谢您对此的任何帮助。

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;
            }
4

2 回答 2

1

听起来您还想要第二级急切加载的实体。

在相同的 LoadOptions 上,尝试:

lo.LoadWith<IncidentRootCause>(irc => irc.RootCause);
于 2012-09-10T16:02:12.083 回答
0

您可能需要检查生成的 SQL。尝试加载多个子项时,可能会忽略某些带有选项的加载,因为这可能意味着提取太多记录。因此,在 using 子句退出之前,您的某些子记录可能不会被提取。

于 2012-09-10T17:24:42.053 回答