我有一个简单的问题。我们在MVC应用程序中使用数据库来保存我们的联系人。但是当表更新时,行的id正在递增。在我的脑海中出现了一些关于整数限制的问题。在我们的表中,Id变量是整数。它可以通过它的限制崩溃。所以我把它写进了我的项目,
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('Contacts', RESEED, 0)");
我可以在Code First Entity Framework中使用它吗?它合法吗?感谢...
答案 0 :(得分:0)
我可以在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)...
在您的应用程序中为此作业执行额外任务,例如一个pro周,并且不会每次通过应用程序启动或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
的主键中使用longpublic long Id {get;set;}
备注:强>
如果索引在10%到30%之间碎片化,我将重新编制索引并更新统计信息。如果索引碎片超过30%,我将重新建立索引 - 没有UPDATE STATISTICS,因为这是由REBUILD处理的。请记住,重建只会更新与索引直接关联的统计信息对象。其他列统计信息需要单独维护。