簡體   English   中英

具有預生成視圖的自我跟蹤實體

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM