Asp.net mvc 在没有多个数据库调用的情况下加载相关对象
我正在学习LINQtoSQL,遇到了以下障碍 我对以下三个表有一个简单的定义: PC PCGUID、ParentPCGUID、ModelName、RetailerGUID 提供OfferGUID、ParentGUID、标题 零售商RetailerGUID,名称 具有以下关系: PC 1:N报价 零售商1:N个人电脑 零售商1:N报价 PC 1:N PC自参考 我需要从PC上抓取记录,其中只有一条记录来自PC。提供具体的where条款,只有一条记录来自PC。零售商。提供具体的where条款,希望只在数据库上点击一次 到目前为止,我已经尝试了大约100个查询,但是它多次命中数据库Asp.net mvc 在没有多个数据库调用的情况下加载相关对象,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,我正在学习LINQtoSQL,遇到了以下障碍 我对以下三个表有一个简单的定义: PC PCGUID、ParentPCGUID、ModelName、RetailerGUID 提供OfferGUID、ParentGUID、标题 零售商RetailerGUID,名称 具有以下关系: PC 1:N报价 零售商1:N个人电脑 零售商1:N报价 PC 1:N PC自参考 我需要从PC上抓取记录,其中只有一条记录来自PC。提供具体的where条款,只有一条记录来自PC。零售商。提供具体的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对象。任何帮助都将不胜感激
谢谢您可能想试试这样的东西,但我不确定它是否有用
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;
感谢您的快速响应,但这实际上导致更多的呼叫db。我尝试过各种数据加载选项,但都没有用。这很公平。幸运的是,数据加载在过去往往对我有所帮助,但那是在返回一个关联实例时,而不是返回一个包含多个实例的匿名类。