Linq to SQL预取多个表不起作用

时间:2013-08-14 01:11:25

标签: linq-to-sql

我正在尝试使用Linq to SQL预取一些相关的表,但只预取了一个表。

我的代码看起来像这样......

using (EVTDataContext db = new EVTDataContext(Config.ConnString))
{
    DataLoadOptions loadOptions = new DataLoadOptions();
    loadOptions.LoadWith<EVT_tbEventVersion>(c => c.EVT_tbRegistrations);
    loadOptions.LoadWith<EVT_tbEventVersion>(c => c.EVT_tbSubEvents);
    db.LoadOptions = loadOptions;

    var q = ...

EVT_tbRegistrations和EVT_tbSubEvents都与EVT_tbEventVersion相关联。如果我使用任何一个LoadWidth行子,他们每个人都可以工作,但如果我同时使用它们,那么只有一个工作。

如何让Linq to SQL预取两个表?

2 个答案:

答案 0 :(得分:0)

似乎Linq to SQL只能从每个表中加入一对一的关系。如果你试图指定多个来预加载,那么选择哪个预加载以及哪个其他要延迟(忽略LoadWith)。

Linq2SQl eager load with multiple DataLoadOptions

找到答案

答案 1 :(得分:-1)

我对您正在做的事情没有经验..但在此处查看MSDN后How to: Retrieve Many Objects At Once (LINQ to SQL)我可以看到您的代码与MS示例之间的差异。最值得注意的是:

DataLoadOptions ds = new DataLoadOptions();
ds.LoadWith<Customer>(c => c.Orders);
ds.LoadWith<Order>(o => o.OrderDetails);
db.LoadOptions = ds;

为每个预取指定不同的<T>