Asp.net mvc 在没有多个数据库调用的情况下加载相关对象

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条款,希望只

我正在学习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个查询,但是它多次命中数据库

    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。我尝试过各种数据加载选项,但都没有用。这很公平。幸运的是,数据加载在过去往往对我有所帮助,但那是在返回一个关联实例时,而不是返回一个包含多个实例的匿名类。