我正在学习LINQ to SQL,并遇到了以下障碍。
我有以下3个表:
具有以下关系:
我需要从PC上获取记录,只有1条记录来自PC.Offer(具有特定的where子句),而且只有1条记录来自PC.Retailer.Offer(具有特定的where子句),并且希望只有一个记录来自数据库中。
到目前为止我有以下查询(到目前为止我已尝试了大约一百个),但它多次击中数据库。
var q = from pc in PCs
where pc.PCGUID == guid || pc.ParentPCGUID == guid
select new {
PC = pc,
PCOffers = pc.Offers.FirstOrDefault(),
RetailOffers = pc.Retailer.Offers.FirstOrDefault()
};
如果我只提供商品表的一个属性,那么:
var q = from pc in PCs
where pc.PCGUID == guid || pc.ParentPCGUID == guid
select new {
PC = pc,
PCOffers = pc.Offers.FirstOrDefault().Title,
RetailOffers = pc.Retailer.Offers.FirstOrDefault().Title
};
它工作得很好,只能击中db一次,但我需要整个offer对象。任何帮助将不胜感激。
由于
答案 0 :(得分:0)
您可能想尝试这样的事情,但我不确定它会有所帮助。
YourDataContext db = new YourDataContext();
db.DeferredLoadingEnabled = false;
DataLoadOptions loadOptions = new DataLoadOptions();
loadOptions.LoadWith<PC>(p => p.Offers);
loadOptions.LoadWith<PC>(p => p.Retailer);
loadOptions.LoadWith<Retailer>(r => r.Offers);
db.LoadOptions = loadOptions;