实体框架代码优先使用
本文关键字:框架 代码 实体 | 更新日期: 2023-09-27 18:02:41
我有一个简单的问题。我们使用MVC应用程序中的数据库来保存我们的联系人。但是当表更新时,row的id是递增的。我想到了一个关于整数极限的问题。在我们的表Id变量是整数。它可能会崩溃到极限。所以我把它写进了我的项目,
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('Contacts', RESEED, 0)");
我可以使用它在代码第一实体框架?它合法吗?谢谢…
我可以使用它在代码第一实体框架?它合法吗?谢谢…
正如@ jpgrassi所说,这可能会给你带来严重的问题。
你能做什么来解决这个问题?解决方案1)您可以重新组织和重建索引如下:*
context.Database。ExecuteSqlCommand("ALTER INDEX ALL ON Contacts REORGANIZE;");context.Database。execute ("ALTER INDEX ALL ON Contacts REBUILD;");
你必须注意,你的业务逻辑是不依赖于主键,例如,你没有类似的东西在你的代码如果(联系。
在你的应用程序中为这个任务做一个额外的任务,例如每周一次,不要每次在应用程序启动或创建DbContext时都执行这个命令!
更多信息:
https://msdn.microsoft.com/en-us/library/ms189858.aspxhttps://www.brentozar.com/archive/2013/09/index-maintenance-sql-server-rebuild-reorganize/
解决方案2)在主键中使用long而不是int
public long Id {get;set;}
指出:
如果索引在10%到30%之间碎片化,我会重新组织索引并更新统计数据。如果索引超过30%的碎片化,我将重建索引——没有UPDATE STATISTICS,因为这是由REBUILD处理的。但是请记住,重建只更新与索引直接关联的统计对象。其他列统计信息需要单独维护。