我正在做一個圍繞Entity Framework及其相關的.edmx文件的研究。EF和.EDMX性能注意事項
我們目前的設置有一些這些文件被編譯到我們廣泛使用的庫中。當然,這不是一個優雅的解決方案 - 每次我們想要更新或添加到數據庫層中的某些東西時,我們都需要重新編譯這個庫。
我們僅使用存儲過程,而我們當前的方法是在對象上下文中使用ExecuteFunction
方法。但是,這確實需要了解從edmx文件導入的函數返回什麼類型(context.ExecutionFunction<T>()
返回ObjectResult<T>
)。
我的理論解決方案是存儲我們想要在相對路徑下使用的任何.edmx文件,並讓庫在運行時加載它們。
有沒有人試過這個?它工作嗎?是否有任何性能考慮因素需要考慮?這將用於電子商務環境,因此效率和速度非常重要。
編輯一些更清晰:
這肯定會是可能的編譯每個單獨的.edmx文件在其自己的組裝,這可能會允許使用this。對此的任何投入也會很好。
我們打這個電話現在是這樣的
Database.MakeCall<T>("stored_procedure_name", parametersCollection, KnownDatabases.Database);
在它的構造,數據庫處理程序將保存每個它所知道的數據庫環境(每個the.edmx文件庫)的情況下, 。使用KnownDatabases
枚舉,它選擇運行查詢的數據庫。
理想情況下,我想實現這樣一個電話:
Database.MakeCall<T>("context_name", "stored_procedure_name", parametersCollection);
凡在數據庫處理程序將在其構造函數中,搜索文件夾的.edmx文件並加載它們,然後存儲實例針對上下文名稱的每個上下文。如何定義或獲得T
現在有點模糊。
在這兩種情況下,返回類型是ObjectResult<T>
我不完全確定該方法是否可行。理想情況下,我們需要能夠針對我們提供的任何數據庫運行存儲過程(我們知道其名稱)。現在,這是通過爲每個數據庫生成一個新的.edmx文件並將其編譯到庫中來實現的。我想實現的是運行存儲過程的代碼與運行它們的數據模型的解耦。 – AndyBursh