我正在尝试使用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预取两个表?
答案 0 :(得分:0)
似乎Linq to SQL只能从每个表中加入一对一的关系。如果你试图指定多个来预加载,那么选择哪个预加载以及哪个其他要延迟(忽略LoadWith)。
找到答案答案 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>
。