天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Entity Framework 緩存處理與日志監(jiān)控

  在Kooboo中使用了Entity Framework作為持久化框架,但由于EF1.0并沒(méi)有提供完整緩存解決方案,一直以來(lái)都在為數(shù)據(jù)緩存而煩腦,在沒(méi)有找到合適解決方案的情況下,采取了臨時(shí)的解決辦法:直接緩存實(shí)體。但是由于Entity實(shí)體都是帶狀態(tài)的,并且都與ObjectContext有間接的反向引用,緩存帶狀態(tài)的實(shí)體,會(huì)造成對(duì)象上下文混亂和連接資源的無(wú)法被正確釋放。因此緩存的Entity實(shí)體,首先必須被分離或者重新定義POCO實(shí)體來(lái)代替Entity實(shí)體作為緩存對(duì)象。這樣一來(lái),所有的緩存實(shí)體的關(guān)聯(lián)關(guān)系都會(huì)失效,造成使用上的麻煩和整個(gè)軟件框架存在嚴(yán)重的不足。

  再說(shuō)說(shuō)EF的SQL日志問(wèn)題。在之前的LINQ TO SQL的項(xiàng)目中,有一個(gè)可視化的調(diào)試器,可以查看查詢表達(dá)式生成對(duì)應(yīng)的SQL語(yǔ)句,這種可以大大方便開(kāi)發(fā)人員的調(diào)試工作。可以在EF1.0中,卻一直也找不到類似可用的工具。因此,我的做法是通過(guò)SQL Profile來(lái)查看EF生成和執(zhí)行的SQL語(yǔ)句。雖然可行,但還是很不方便。

  現(xiàn)在,EF團(tuán)隊(duì)終于推出一套比較完整的緩存和SQL執(zhí)行日志的解決方案,EFProviderWrappers。他們的做法是在原來(lái)的EF Provider之上,再加一層包裝,通過(guò)這層包裝攔截,進(jìn)行數(shù)據(jù)緩存和日志監(jiān)控。這里緩存的數(shù)據(jù)是數(shù)據(jù)庫(kù)查詢后返回的原生數(shù)據(jù),并不是Entity實(shí)體對(duì)象,這樣就可以避免Entity實(shí)體狀態(tài)對(duì)緩存造成的的極端負(fù)面影響。并且這樣的緩存對(duì)上層的數(shù)據(jù)查詢本身是透明,在同一個(gè)封閉區(qū)間內(nèi),緩存數(shù)據(jù)所依賴的實(shí)體類型在被更新后(對(duì)應(yīng)的表有發(fā)生CURD操作),緩存并會(huì)被自動(dòng)清空。對(duì)于日志的監(jiān)控,經(jīng)過(guò)這層包裝后就可以非常容易得到處理。

EfProviderWrapper

  上面的圖雖然是說(shuō)明對(duì)SqlClient有效,但由于這層包裝并不涉及具體的SQL操作,因此對(duì)不同的數(shù)據(jù)的Provider應(yīng)該都是有效。下面通過(guò)一個(gè)自帶的實(shí)例簡(jiǎn)單介紹一下如何使用。

  在下載的EFProviderWrappers解決方案中,EFProviderWrapperToolkit,EFCachingProvider,EFTracingProvider這三個(gè)工程是真正干事的,其它的工程都是示例工程。在EFProviderWrapperDemo工程,我們可以找到我們所要的例子。

  第一步:在配置文件中添加如下配置:

<system.data>
<DbProviderFactories>
<add name="EF Caching Data Provider"
invariant
="EFCachingProvider"
description
="Caching Provider Wrapper"
type
="EFCachingProvider.EFCachingProviderFactory, EFCachingProvider,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b
" />
<add name="EF Tracing Data Provider"
invariant
="EFTracingProvider"
description
="Tracing Provider Wrapper"
type
="EFTracingProvider.EFTracingProviderFactory, EFTracingProvider,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b
" />
<add name="EF Generic Provider Wrapper"
invariant
="EFProviderWrapper"
description
="Generic Provider Wrapper"
type
="EFProviderWrapperToolkit.EFProviderWrapperFactory, EFProviderWrapperToolkit,
 Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b
" />
</DbProviderFactories>
</system.data>

NET技術(shù)Entity Framework 緩存處理與日志監(jiān)控,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 胸太大被男同桌吃好爽 | 成人性生交大片免费看金瓶七仙女 | 国产亚洲欧美在线中文BT天堂网 | 亚洲精品乱码久久久久久v 亚洲精品乱码电影在线观看 | 亚洲精品喷白浆在线观看 | 边做边爱免费视频 | 欧美含羞草免费观看全部完 | 国产成人一区免费观看 | u15女少天堂写真 | 好妞操 | 日本一区精品久久久久影院 | 成人免费在线观看 | 啦啦啦影院视频在线看高清... | 欧美精品成人a多人在线观看 | 亚洲 日本 天堂 国产 在线 | 久久精品无码人妻无码AV蜜臀 | 午夜一个人在线观看完整版 | 美女坐脸vk | 日本久久久久亚洲中字幕 | 国产偷抇久久精品A片蜜臀AV | 久久精品九九亚洲精品天堂 | 美女脱精光让男生桶下面 | 国产AV无码熟妇人妻麻豆 | 97国产揄拍国产精品人妻 | 男生jj插入女生jj | 妖精视频免费高清观看 | cctv网站| bl高h乱肉辣文 | 久久精品亚洲国产AV涩情 | 国产 在线 亚洲 欧美 动漫 | xvideos中文版在线视频 | 日本亚洲精品无码区国产电影 | 一区二区不卡在线视频 | 国产一区二区青青精品久久 | 古月娜下面好紧好爽 | 国产精品久久久久久AV免费不卡 | bl肉yin荡受np各种play | 青青草在现线免费观看 | 美女被抽插到哭内射视频免费 | 色偷偷av男人的天堂 | 国内精品久久久久久西瓜色吧 |