簡體   English   中英

實體框架代碼第一用法

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

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