成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

博客園現代化建設——AutoMapper

數據庫
上篇隨筆寫的是我們在新版博客后臺開發中用上了新式武器——Entity Framework,該武器火力猛,威力大,但使用中發現在某些場景下顯得不夠靈活,后來不得不引進輕量級常規武器——AutoMapper。

上篇隨筆寫的是我們在新版博客后臺開發中用上了新式武器——Entity Framework,該武器火力猛,威力大,但使用中發現在某些場景下顯得不夠靈活,后來不得不引進輕量級常規武器——AutoMapper

我們遇到的場景是一個復雜的實體類,有很多屬性,數據庫操作是一個跨數據庫查詢,查詢的字段遠遠少于實體類的屬性。

對于跨數據庫查詢,我們沒有找到通過LINQ to Entities實現的方法,于是就用DbSet.SqlQuery調用存儲過程進行查詢,代碼如下:

  1. using (BlogDbContext context = new BlogDbContext())  
  2. {  
  3.     string sql = string.Format("EXEC [blog_Entry_Get] @BlogID={0},@EntryID={1}", blogId, entryId);  
  4.     BlogEntry entry = context.BlogEntries.SqlQuery(sql).Single();  
  5. }  

雖然不能使用LINQ進行查詢,但我們不想在這里拋棄這個新式武器,不能發射導彈,可以用一下機關槍嘛。于是,如上面的代碼所示,用SqlQuery進行查詢,用Entity Framework完成查詢結果與實體類的數據映射。

結果發現,Entity Framework是依賴于實體類的屬性進行映射的。如果把Entity Framework比作機關槍,那實體類的屬性就是子彈,每顆子彈只能攻擊唯一對應的目標,在射擊過程中,只要有一顆子彈攻擊的目標不存在,機槍就會卡殼(子彈決定目標?)。也就是Entity Framework會在IDataReader中查找每個實體類屬性對應的值,而我們的應用場景卻是“查詢的字段遠遠少于實體類的屬性”,這時,Entity Framework成為了一堆廢鐵(這個說法不妥,可以通過modelBuilder.Entity<BlogEntry>().Ignor忽略不需要映射的字段,但是,如果不同的查詢返回的字段不同,這個方法就不管用了)。

為什么不由目標決定子彈?出現什么目標,用什么子彈,既節省子彈,又不會卡殼。也就是根據查詢結果給對應的實體類屬性賦值。難道這個新式武器也有設計缺陷,沒有考慮到這樣的應用場景?還是我們不會使用?

翻來覆去地擺弄它,還是沒搞定,只能換武器...

數據庫查詢換成了舊式武器Enterprise Library,并引進了新的輕量級常規武器AutoMapper進行查詢結果與實體類的映射(而且是開源的)。

“輕量級”果然名不虛轉,簡單易用,針對性強,我們用它輕松解決了問題,代碼如下:

  1. SqlCommand command = (SqlCommand)_sqldb.GetStoredProcCommand("[blog_Entry_Get]");  
  2. command.Parameters.AddWithValue("@BlogID", blogId);  
  3. command.Parameters.AddWithValue("@EntryID", entryId);  
  4. using (IDataReader reader = _sqldb.ExecuteReader(command))  
  5. {  
  6.     if (reader.Read())  
  7.     {  
  8.         BlogEntry entry = AutoMapper.Mapper.DynamicMap<BlogEntry>(reader);  
  9.     }  
  10. }  

原文鏈接:http://www.cnblogs.com/dudu/archive/2011/03/28/entity_framework_automapper.html

【編輯推薦】

  1. 博客園現代化建設——Entity Framework
責任編輯:艾婧 來源: 博客園
相關推薦

2011-03-30 13:14:05

Entity Fram

2018-02-01 16:34:54

2019-09-23 17:34:05

存儲

2022-07-11 05:34:19

云原生應用程序

2015-10-29 14:35:21

移動設備現代化

2020-06-05 14:16:05

醫藥

2020-05-08 14:47:53

網絡現代化網絡IT

2013-03-19 18:04:06

51CTO

2021-04-13 16:13:38

大數據教育科學

2021-07-09 05:25:48

CIO遺留系統現代化用戶體驗

2025-02-13 00:42:58

2015-09-15 11:06:33

第一屆稅務行業信息化研華為

2024-12-02 09:26:17

2022-11-01 07:14:32

裸金屬云云服務云原生

2023-02-08 11:07:56

數字時代數字運營模式

2023-06-25 09:04:12

數字企業架構EA

2023-05-03 21:47:22

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 爱爱免费视频 | 国产乱人伦精品一区二区 | 欧美一区二区三区 | 国产一级毛片精品完整视频版 | 国产精品99久久久久久动医院 | 国产精品久久久久久一区二区三区 | 色综合天天天天做夜夜夜夜做 | 日韩欧美一区在线 | 亚洲色欲色欲www | 午夜视频在线免费观看 | 久久精品国产精品青草 | 亚洲九色 | 伊人伊人伊人 | 在线亚洲一区 | 久久久久久国产精品 | 久久999| 日韩精品欧美精品 | 久久午夜视频 | 欧美视频1区 | 国产欧美日韩 | 天天色综| 成人久久18免费网站麻豆 | 久久激情视频 | 国产精品电影在线观看 | 毛片网站在线观看 | 成人精品久久久 | 久久看片| 男人天堂av网站 | 手机三级电影 | 在线免费黄色小视频 | 精品国产伦一区二区三区观看体验 | 亚洲国产一区在线 | 偷拍自拍在线观看 | 久久国产精品久久久久 | 日韩av在线免费 | 夜夜久久 | 欧美天天视频 | 欧美一级二级在线观看 | 精品久久久久久亚洲精品 | 99九色| 成人a在线 |