一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

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

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

EfProviderWrapper

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

  在下載的EFProviderWrappers解決方案中,EFProviderWrapperToolkit,EFCachingProvider,EFTracingProvider這三個工程是真正干事的,其它的工程都是示例工程。在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)載需保留來源!

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

主站蜘蛛池模板: 二区视频 | 国产成人精品精品欧美 | 亚洲最大色网 | 经典毛片 | 四虎久久 | 国内精品视频一区 | 久久国产免费一区二区三区 | 五月婷婷色综合 | 久久国产精品免费一区二区三区 | 久久亚洲人成国产精品 | 四虎国产精品永久地址99 | 国产精品大白天新婚身材 | 欧美亚洲综合一区 | 婷婷亚洲久悠悠色悠在线播放 | 欧美人体大胆私密视频 | 天天综合色天天综合网 | 黄色高清视频在线观看 | 欧美午夜色大片在线观看免费 | 亚洲图片 中文字幕 | 国产精品2019 | 亚洲综合一区二区 | 国产精品亚洲小说专区 | 午夜精品视频5000 | 91婷婷| 日本tubesex人妇| 国产精品每日在线观看男人的天堂 | 人人爱天天做夜夜爽2020麻豆 | 国产免费黄色大片 | 最新福利小视频在线播放 | 国产99在线播放免费 | 国产成人精品一区二区三在线观看 | 久久久久久久成人午夜精品福利 | 最新精品视频在线观看 | 国产午夜在线观看视频播放 | 中文字幕乱码二三区免费 | 玖玖爱视频在线观看 | 亚洲色四在线视频观看 | 亚洲丶国产丶欧美一区二区三区 | 久久黄色影片 | 国产二区视频 | 久久成人精品视频 |