[英]Entity Framework Code First Usage
我有一個簡單的問題。 我們在MVC應用程序中使用數據庫來保存我們的聯系人。 但是當表更新時,行的id正在遞增。 在我的腦海中出現了一些關於整數限制的問題。 在我們的表中,Id變量是整數。 它可以通過它的限制崩潰。 所以我把它寫進了我的項目,
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('Contacts', RESEED, 0)");
我可以在Code First Entity Framework中使用它嗎? 它合法嗎? 謝謝...
我可以在Code First Entity Framework中使用它嗎? 它合法嗎? 謝謝...
正如@ jpgrassi所說,這可能會給你帶來嚴重的問題。
你能做些什么來解決這個問題?
解決方案1)您可以按如下方式重新組織和重建索引:*
context.Database.ExecuteSqlCommand(“ALTER INDEX ALL ON Contacts REORGANIZE;”); context.Database.ExecuteSqlCommand(“ALTER INDEX ALL ON Contacts REBUILD;”);
您必須注意您的商務邏輯不依賴於素數鍵,例如,如果(Contact.Id == 1),您的代碼中沒有類似的東西......
在您的應用程序中為此作業執行額外任務,例如,一周一次,並且不會每次通過應用程序啟動或DbContext創建執行此命令!
更多信息:
https://msdn.microsoft.com/en-us/library/ms189858.aspx https://www.brentozar.com/archive/2013/09/index-maintenance-sql-server-rebuild-reorganize/
解決方案2)在int的主鍵instaed中使用long
public long Id {get;set;}
筆記:
如果索引在10%到30%之間碎片化,我將重新編制索引並更新統計信息。 如果索引碎片超過30%,我將重新建立索引 - 沒有UPDATE STATISTICS,因為這是由REBUILD處理的。 請記住,重建只會更新與索引直接關聯的統計信息對象。 其他列統計信息需要單獨維護。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.