sql server语言 - Linq2Entities 是否比具有多个连接的 storageProc 更快



QI 继承了对 MSSql 的多个存储过程调用。 这个包含几个连接。 我的问题是:在这种情况下,使用 L2E 会比直接通过 ADO 调用存储过程更快吗? 这是我的 LinQ 查询:

   public List<object> getDNISData(int DNIS)
    {
        List<object> DataItems = new List<object>();
        using (VPEntities VPCtx = new VPEntities())
        {
            var DD = 
                from nm in VPCtx.NumberMaps
                join g in VPCtx.Greetings on nm.Greeting_ID equals g.Greeting_ID
                join p1 in VPCtx.Prompts on nm.Prompt1_ID equals p1.Prompt_ID
                join p2 in VPCtx.Prompts on nm.Prompt2_ID equals p2.Prompt_ID
                join p3 in VPCtx.Prompts on nm.Prompt3_ID equals p3.Prompt_ID
                join p4 in VPCtx.Prompts on nm.Prompt4_ID equals p4.Prompt_ID
                join p5 in VPCtx.Prompts on nm.Prompt5_ID equals p5.Prompt_ID
                join h1 in VPCtx.HoldMsgs on nm.HoldMsg1_ID equals h1.HoldMsg_ID
                join h2 in VPCtx.HoldMsgs on nm.HoldMsg2_ID equals h2.HoldMsg_ID
                join hm in VPCtx.HoldMusics on nm.HoldMusic_ID equals hm.HoldMusic_ID
                join d in VPCtx.Disclaimers on nm.Disclaimer_ID equals d.Disclaimer_ID
                where nm.DNIS == DNIS && nm.Enabled 
                select (new {NumberID = nm.Number_ID, PortfolioID = nm.Portfolio_ID, PropertyID = nm.Property_ID, Adsource = nm.AdSource_ID,
                                    PlanTypeID = nm.PlanType_ID, GreetingFile = g.GreetingFile,  
                                    PromptFile1 = p1.PromptFile,  Accepts1 = p1.Accepts, PromptAction_ID1 = p1.PromptAction_ID,  
                                    PromptFile2 = p2.PromptFile,  Accepts2 = p2.Accepts, PromptAction_ID2 = p2.PromptAction_ID, 
                                    PromptFile3 = p3.PromptFile, Accepts3 = p3.Accepts, PromptAction_ID3 = p3.PromptAction_ID,
                                    PromptFile4 = p4.PromptFile, Accepts4 = p4.Accepts, PromptAction_ID4 = p4.PromptAction_ID, 
                                    PromptFile5 = p5.PromptFile, Accepts5 = p5.Accepts, PromptAction_ID5 = p5.PromptAction_ID,
                                    HoldMsgFile1 = h1.HoldMsgFile, HoldMsgFile2 = h2.HoldMsgFile,
                                    Destination1 = nm.Destination1, Destination2 = nm.Destination2, Destination3 = nm.Destination3,
                                    UIType_ID = nm.UIType_ID,
                                    RingCount = nm.RingCount,
                                    Enabled = nm.Enabled,
                                    Spanish = nm.Spanish,
                                    HoldMusicFile = hm.HoldMusicFile,
                                    Template_ID = nm.Template_ID,
                                    FrontLineForward = nm.FrontLineForward,
                                    DisclaimerFIle = d.DisclaimerFile});
           DataItems = DD.ToList<object>();
            return DataItems;
        };
    }
如果 LINQ 查询直接转换了存储过程中包含的 SQL 查询,

则调用存储过程可能会稍微快一些,这不是因为它会影响数据库的性能,而是因为 LINQ to Entities 必须首先将查询转换为 SQL。

但是,无论数据大小如何,这种转换的成本都是相同的,因此,只有当查询在数据库上运行得非常快,但您多次调用它时,差异才会很明显。在你注意到性能是一个问题之前,我建议你做任何使你的代码最容易维护的事情。

相关内容

  • 没有找到相关文章

最新更新