第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

實體框架linq查詢Include()多個子實體

實體框架linq查詢Include()多個子實體

慕哥9229398 2019-09-18 19:39:09
這可能是一個非常重要的問題,但是當編寫跨越三個級別(或更多)的查詢時,包含多個子實體的好方法是什么?即我有4個表:Company,Employee,Employee_Car和Employee_Country公司與員工有1:m的關(guān)系。Employee與Employee_Car和Employee_Country的關(guān)系為1:m。如果我想編寫一個返回所有4個表中數(shù)據(jù)的查詢,我目前正在編寫:Company company = context.Companies                         .Include("Employee.Employee_Car")                         .Include("Employee.Employee_Country")                         .FirstOrDefault(c => c.Id == companyID);必須有一個更優(yōu)雅的方式!這是漫長的纏繞,并產(chǎn)生可怕的SQL我在VS 2010中使用EF4
查看完整描述

3 回答

?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

使用擴展方法。將NameOfContext替換為對象上下文的名稱。


public static class Extensions{

   public static IQueryable<Company> CompleteCompanies(this NameOfContext context){

         return context.Companies

             .Include("Employee.Employee_Car")

             .Include("Employee.Employee_Country") ;

     }


     public static Company CompanyById(this NameOfContext context, int companyID){

         return context.Companies

             .Include("Employee.Employee_Car")

             .Include("Employee.Employee_Country")

             .FirstOrDefault(c => c.Id == companyID) ;

      }


}

然后你的代碼變成了


     Company company = 

          context.CompleteCompanies().FirstOrDefault(c => c.Id == companyID);


     //or if you want even more

     Company company = 

          context.CompanyById(companyID);


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關(guān)注
  • 2809 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號