实体框架代码首次使用

时间:2016-08-17 11:17:03

标签: c# entity-framework

我有一个简单的问题。我们在MVC应用程序中使用数据库来保存我们的联系人。但是当表更新时,行的id正在递增。在我的脑海中出现了一些关于整数限制的问题。在我们的表中,Id变量是整数。它可以通过它的限制崩溃。所以我把它写进了我的项目,

 context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('Contacts', RESEED, 0)");

我可以在Code First Entity Framework中使用它吗?它合法吗?感谢...

1 个答案:

答案 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

的主键中使用long
public long Id {get;set;}

备注:

如果索引在10%到30%之间碎片化,我将重新编制索引并更新统计信息。如果索引碎片超过30%,我将重新建立索引 - 没有UPDATE STATISTICS,因为这是由REBUILD处理的。请记住,重建只会更新与索引直接关联的统计信息对象。其他列统计信息需要单独维护。