[英]Self Tracking Entities with Pre-Generated Views
我目前正在使用.NET實體框架的自我跟蹤實體,但是我想加快查詢的執行速度。
每個人似乎建議的第一件事是在編譯時生成模型的視圖。
使用ssdl文件等,我能夠創建一個“ MyModel.Views.cs”,該文件在我的項目中進行了編譯。 但是,我還沒有看到這個好處呢? 我在這里想念什么嗎? 如果我使用自我跟蹤實體,我不會從中受益嗎?
實體框架還可以通過哪些其他方式提高性能? 如何創建預編譯視圖,但提供參數? 例如,搜索查詢需要采用各種不同的參數,但可以使其變得更快!
謝謝
好吧,請記住,預先生成的視圖僅對某些操作有所幫助。 它們幫助查詢由實體框架本身構建的查詢。 例如,如果對相關屬性進行Load
,則將使用預先生成的視圖(如果可用)。 另一方面,如果您在進行投影或自定義的Where
調用,則無法使用預生成的視圖,因為它們不代表您的自定義查詢。 因此,這取決於您在做什么。
視圖預生成的優點是它接近於免費。 對項目文件稍加擺弄,就可以提高某些操作的性能。 但這並不能使一切變得更快。
無論您使用什么查詢,始終使用預生成的視圖。 讓我解釋一下什么是預先生成的視圖。 首次查詢實體數據模型時,它會轉換為esql視圖。 這是第一步,在運行時和查詢模型時按需進行。 創建該視圖后,將在應用程序域的整個生命周期中對其進行緩存。 但是,生成視圖僅是一次成本,就像asp.net網站在有人第一次訪問您的網站時會受到第一點擊一樣。 您確實可以為第一個用戶節省時間,但是在此之后,您的體驗確實相同。 僅當您的模型很大並且第一次查詢的啟動成本很高時,才應考慮預生成視圖。 總的來說,有很多方法可以提高自我跟蹤實體和EF的性能。 我的書中有一整章都談到提高EF的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.