我已經開發了一個應用程序(帖子附件,評論等)使用EF代碼優先使用TPT。它工作正常,並且正在與一些客戶端進行beta測試,但是有很多層次結構。所以我有一個具有各種繼承模型的基礎模型,每個模型都包含許多本身是繼承類型的屬性。實體框架代碼首先轉換TPT到TPH
我注意到它非常慢,所以我查看了它正在生成的SQL並獲取帖子列表,EF正在生成2000多行SQL。編譯時間非常長,我不喜歡通過網絡爲每個請求發送大量數據的想法。啓動時需要5秒才能獲得3個帖子。隨後的通話速度要快得多,但每次有回收時,速度都會再次變慢。
我已經嘗試過Dapper和手寫代碼,但問題是Dapper不適合多級查詢,因爲它需要依賴類型;即DisplayTemplates和手寫代碼,雖然快速並不合適,因爲它使未來的開發變得更加複雜。
我想嘗試將一些代碼(表格)移動到TPH,並考慮違反第三個規範和代碼可維護性之間的權衡是可以接受的,但我無法找到任何有關如何轉換現有D b。
如果我從頭開始,我會刪除[Table ...]註釋,但是我假設如果我使用填充數據庫執行此操作,我將丟失映射表中的所有數據,並且它不會用現有數據填充新的單個表。
這是正確的嗎?有誰知道如何或最佳實踐將現有的表格從TPT轉換爲TPH。
我只有少數客戶將此作爲試用版運行,但如果我失去了他們的一半數據,他們將不會感到高興!
首先你的數據庫做實驗,以確認收益。然後嘗試EF可以生成哪種遷移可能很有趣。最後總是有一個(強力)解決方案來保存數據,只需重命名新的層次結構並複製這些內容即可。 –