部落格園現代化建設 AutoMapper

2021-09-06 02:47:05 字數 1320 閱讀 5543

我們遇到的場景是乙個複雜的實體類,有很多屬性,資料庫操作是乙個跨資料庫查詢,查詢的字段遠遠少於實體類的屬性。

對於跨資料庫查詢,我們沒有找到通過linq to entities實現的方法,於是就用dbset.sqlquery呼叫儲存過程進行查詢,**如下:

using

(blogdbcontext context

=new

blogdbcontext())

,@entryid=

", blogid, entryid);

blogentry entry

=context.blogentries.sqlquery(sql).single();}

雖然不能使用linq進行查詢,但我們不想在這裡拋棄這個新式**,不能發射飛彈,可以用一下機關槍嘛。於是,如上面的**所示,用sqlquery進行查詢,用entity framework完成查詢結果與實體類的資料對映。

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

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

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

「輕量級」果然名不虛轉,簡單易用,針對性強,我們用它輕鬆解決了問題,**如下:

sqlcommand command 

=(sqlcommand)_sqldb.getstoredproccommand(

"[blog_entry_get]");

command.parameters.addwithvalue(

"@blogid

", blogid);

command.parameters.addwithvalue(

"@entryid

", entryid);

using

(idatareader reader

=_sqldb.executereader(command))}

部落格園現代化建設 AutoMapper

我們遇到的場景是乙個複雜的實體類,有很多屬性,資料庫操作是乙個跨資料庫查詢,查詢的字段遠遠少於實體類的屬性。對於跨資料庫查詢,我們沒有找到通過linq to entities實現的方法,於是就用dbset.sqlquery呼叫儲存過程進行查詢,如下 using blogdbcontext conte...

現代化智慧型園區管理平台的建設方案詳解

伴隨著大家對生活 居住 工作環境的要求愈來愈高,園區的個性化要求愈來愈重要。園區按其功能性與需求性可可分為 物流園區 高新科技園區 工業園區 軟體園區 文化園區 創業園區 綜合園區等等。智慧型園區是融合運用物聯網 雲計算 大資料等新一代的資訊科技對園區進行全面的公升級,整合園區資源資訊,自主創新服務...

部落格園個性化樣式設定(一)

這只是上半部分,下半部分傳送門 1 進入的設定介面 2 進入 部落格側邊欄 點選 申請js許可權 3 編寫申請內容 順便提供例子 1 尊敬的管理員 請問是否可以幫我開通js許可權,我想對文章的樣式和布局需要js 進行調整外觀。謝謝您的幫助。2 尊敬的管理員 您好,我希望用js美化下我的部落格頁面,麻...