实体框架代码优先使用

本文关键字:框架 代码 实体 | 更新日期: 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处理的。但是请记住,重建只更新与索引直接关联的统计对象。其他列统计信息需要单独维护。