使用实体框架和代码优先方法创建数据库时,是不是可以从 SSMS 在数据库表上创建索引
Posted
技术标签:
【中文标题】使用实体框架和代码优先方法创建数据库时,是不是可以从 SSMS 在数据库表上创建索引【英文标题】:Is it ok to create Indexes on a database table from SSMS when the database is created using Entity Framework with a code-first approach使用实体框架和代码优先方法创建数据库时,是否可以从 SSMS 在数据库表上创建索引 【发布时间】:2018-01-17 17:33:03 【问题描述】:我使用实体框架的代码优先方法从头开始创建了我的数据库。我在结构中进行的任何更新都使用代码优先进行。
但是现在,我想管理我的数据库上的索引。就像在某些表上创建新索引并删除已经存在的索引一样。我可以使用 SSMS 中的 SQL 语句直接在数据库上执行此操作,还是只能通过代码优先(更改模型中的代码)来执行此操作?
【问题讨论】:
【参考方案1】:您可以在 SSMS 中创建索引,但如果您对模型进行了更改,则必须在运行迁移后重新应用索引。
为了防止这种情况,您可以修改生成的迁移,在 Up 方法中添加 Sql("add SQL code to add your index here")
调用。
根据偏好,您可能还想生成一个空白迁移,然后将索引添加到空白迁移。
理想情况下,您还应该添加相应的Sql()
调用以在 Down 方法中删除索引。
【讨论】:
以上是关于使用实体框架和代码优先方法创建数据库时,是不是可以从 SSMS 在数据库表上创建索引的主要内容,如果未能解决你的问题,请参考以下文章
在实体框架(脚手架)中使用数据库优先方法时,是不是忽略 HasKey.HasName("PK_123ABC")?