<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      FreeSql 支持導(dǎo)航屬性延時加載,即當(dāng)我們需要用到的時候才進(jìn)行加載(讀?。?,支持1對1、多對1、1對多、多對多關(guān)系的導(dǎo)航屬性。

      當(dāng)我們希望瀏覽某條訂單信息的時候,才顯示其對應(yīng)的訂單詳細(xì)記錄時,我們希望使用延遲加載來實(shí)現(xiàn),這樣不僅加快的了
      讀取的效率,同時也避免加載不需要的數(shù)據(jù)。延遲加載通常用于foreach循環(huán)讀取數(shù)據(jù)時。

      那么我們在定義Model的時候,需要在屬性前面添加virtual關(guān)鍵字。如下
      public class Order { [Column(IsPrimary = true)] public int OrderID { get; set;
      } public string OrderTitle { get; set; } public string CustomerName { get; set;
      } public DateTime TransactionDate { get; set; } public virtual
      List<OrderDetail> OrderDetails { get; set; } } public class OrderDetail {
      [Column(IsPrimary = true)] public int DetailId { get; set; } public int OrderId
      { get; set; } public virtual Order Order { get; set; } }
      延時加載功能默認(rèn)被關(guān)閉的,使用此功能請時,請?jiān)谏昝魈庨_啟;

      延時加載功能,依賴 FreeSql.Extensions.LazyLoading 包,請前往 nuget 下載;
      IFreeSql fsql = new FreeSql.FreeSqlBuilder()
      .UseConnectionString(FreeSql.DataType.MySql, "Data
      Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial
      Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10")
      .UseLazyLoading(true) //開啟延時加載功能 .UseMonitorCommand( cmd =>
      Console.WriteLine(cmd.CommandText)) //監(jiān)聽SQL命令對象,在執(zhí)行前 .Build(); var order =
      fsql.Select<Order>().Where(a => a.OrderID == 1).ToOne(); //查詢訂單表 var
      orderDetail1 = order.OrderDetails; //第一次訪問,查詢數(shù)據(jù)庫 var orderDetail2 =
      order.OrderDetails; //第二次訪問,不查 var order1 = orderDetail1.FirstOrDefault();
      //訪問導(dǎo)航屬性,此時不查數(shù)據(jù)庫,因?yàn)?OrderDetails 查詢出來的時候已填充了該屬性
      控制臺輸出內(nèi)容:
      SELECT a.`OrderID`, a.`OrderTitle`, a.`CustomerName`, a.`TransactionDate` FROM
      `Order` a WHERE (a.`OrderID` = 1) limit 0,1 SELECT a.`DetailId`, a.`OrderId`
      FROM `OrderDetail` a WHERE (a.`OrderId` = 1)
      FreeSql延時加載支持1對1、多對1、1對多、多對多關(guān)系的導(dǎo)航屬性,前三者大小同異,以下我們單獨(dú)介紹多對多關(guān)系。

      多對多延時加載
      public partial class Song { [Column(IsIdentity = true)] public int Id { get;
      set; } public DateTime? Create_time { get; set; } public bool? Is_deleted {
      get; set; } public string Title { get; set; } public string Url { get; set; }
      public virtual ICollection<Tag> Tags { get; set; } } public partial class
      Song_tag { public int Song_id { get; set; } public virtual Song Song { get;
      set; } public int Tag_id { get; set; } public virtual Tag Tag { get; set; } }
      public partial class Tag { [Column(IsIdentity = true)] public int Id { get;
      set; } public int? Parent_id { get; set; } public virtual Tag Parent { get;
      set; } public decimal? Ddd { get; set; } public string Name { get; set; }
      public virtual ICollection<Song> Songs { get; set; } }
      如上有三個表,音樂、標(biāo)簽,以及他們的關(guān)系表。
      var songs = fsql.Select<Song>().Limit(10).ToList(); //取10條音樂 var songs1 =
      songs.First().Tags; //第一次訪問,查詢數(shù)據(jù)庫 var songs2 = Songs.First().Tags; //第二次訪問,不查
      控制臺輸出內(nèi)容:
      SELECT a.`Id`, a.`Create_time`, a.`Is_deleted`, a.`Title`, a.`Url` FROM `Song`
      a limit 0,10 SELECT a.`Id`, a.`Parent_id`, a.`Ddd`, a.`Name` FROM `Tag` a WHERE
      (exists(SELECT 1 FROM `Song_tag` b WHERE (b.`Song_id` = 2 AND b.`Tag_id` =
      a.`Id`) limit 0,1))
      總結(jié)

      優(yōu)點(diǎn):只在需要的時候加載數(shù)據(jù),不需要預(yù)先計(jì)劃,避免了各種復(fù)雜的外連接、索引、視圖操作帶來的低效率問題。

      缺陷:多次與DB交互,性能降低。

      如果要在循環(huán)中使用數(shù)據(jù),請使用貪婪加載,否則使用懶加載。

      系列文章導(dǎo)航

      *
      (一)入門 <https://www.cnblogs.com/FreeSql/p/11531300.html>

      *
      (二)自動遷移實(shí)體 <https://www.cnblogs.com/FreeSql/p/11531301.html>

      *
      (三)實(shí)體特性 <https://www.cnblogs.com/FreeSql/p/11531302.html>

      *
      (四)實(shí)體特性 Fluent Api <https://www.cnblogs.com/FreeSql/p/11531304.html>

      *
      (五)插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531306.html>

      *
      (六)批量插入數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531309.html>

      *
      (七)插入數(shù)據(jù)時忽略列 <https://www.cnblogs.com/FreeSql/p/11531316.html>

      *
      (八)插入數(shù)據(jù)時指定列 <https://www.cnblogs.com/FreeSql/p/11531318.html>

      *
      (九)刪除數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531320.html>

      *
      (十)更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531321.html>

      *
      (十一)更新數(shù)據(jù) Where <https://www.cnblogs.com/FreeSql/p/11531324.html>

      *
      (十二)更新數(shù)據(jù)時指定列 <https://www.cnblogs.com/FreeSql/p/11531327.html>

      *
      (十三)更新數(shù)據(jù)時忽略列 <https://www.cnblogs.com/FreeSql/p/11531334.html>

      *
      (十四)批量更新數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531335.html>

      *
      (十五)查詢數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531339.html>

      *
      (十六)分頁查詢 <https://www.cnblogs.com/FreeSql/p/11531341.html>

      *
      (十七)聯(lián)表查詢 <https://www.cnblogs.com/FreeSql/p/11531346.html>

      *
      (十八)導(dǎo)航屬性 <https://www.cnblogs.com/FreeSql/p/11531352.html>

      *
      (十九)多表查詢 <https://www.cnblogs.com/FreeSql/p/11531362.html>

      *
      (二十)多表查詢 WhereCascade <https://www.cnblogs.com/FreeSql/p/11531372.html>

      *
      (二十一)查詢返回數(shù)據(jù) <https://www.cnblogs.com/FreeSql/p/11531376.html>

      *
      (二十二)Dto 映射查詢 <https://www.cnblogs.com/FreeSql/p/11531381.html>

      *
      (二十三)分組、聚合 <https://www.cnblogs.com/FreeSql/p/11531384.html>

      *
      (二十四)Linq To Sql 語法使用介紹 <https://www.cnblogs.com/FreeSql/p/11531392.html>

      *
      (二十五)延時加載

      *
      (二十六)貪婪加載 Include、IncludeMany、Dto、ToList
      <https://www.cnblogs.com/FreeSql/p/11531404.html>

      *
      (二十七)將已寫好的 SQL 語句,與實(shí)體類映射進(jìn)行二次查詢
      <https://www.cnblogs.com/FreeSql/p/11531416.html>

      *
      (二十八)事務(wù) <https://www.cnblogs.com/FreeSql/p/11531423.html>

      *
      (二十九)Lambda 表達(dá)式 <https://www.cnblogs.com/FreeSql/p/11531425.html>

      *
      (三十)讀寫分離 <https://www.cnblogs.com/FreeSql/p/11531430.html>

      *
      (三十一)分區(qū)分表 <https://www.cnblogs.com/FreeSql/p/11531435.html>

      *
      (三十二)Aop <https://www.cnblogs.com/FreeSql/p/11531471.html>

      *
      (三十三)CodeFirst 類型映射 <https://www.cnblogs.com/FreeSql/p/11531543.html>

      *
      (三十四)CodeFirst 遷移說明 <https://www.cnblogs.com/FreeSql/p/11531550.html>

      *
      (三十五)CodeFirst 自定義特性 <https://www.cnblogs.com/FreeSql/p/11531576.html>

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          不卡高清中文字幕 | 小sao货水好多真紧cao视频 | 成人精品一二三 | 91国产一区二区 | 亚洲成人娱乐网 | 污污的网站免费观看 | 免费看60分钟高潮v片视频 | 国内精品久久久久久久久鸭下载 | 黄色操逼小视频 | 精品永久|