0

我正在尝试使用 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 预取两个表?

4

2 回答 2

0

似乎 Linq to SQL 只能连接每个表中的单个一对多关系。如果您尝试指定多个预加载,它会选择预加载哪一个以及延迟哪些其他(忽略 LoadWith)。

在具有多个 DataLoadOptions 的 Linq2SQl 急切加载中找到了答案

于 2013-12-19T21:53:04.647 回答
-1

我对您正在做的事情没有经验..但是在此处查看 MSDN如何:一次检索许多对象(LINQ to SQL)后,我可以看到您的代码和 MS 示例之间的差异。最为显着地:

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

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

于 2013-08-14T01:22:25.713 回答