我正在使用EF 4.1 CodeFirst来创建我的数据库。似乎EF正在创建具有聚簇索引的所有主键,这在一种情况下对我们来说不是最佳的(可能更多情况)。 有没有办法告诉EF使用主键作为非聚集索引生成此表?
当然我们可以在创建数据库之后使用自定义脚本手动完成,但我们有很多外键指向此表,如果有更好,更直接的话,这将是一个非常优化的解决方案在数据库创建期间已经这样做的方法。 任何帮助表示赞赏
答案 0 :(得分:13)
没有办法控制SQL代码首先生成 - 它首先是代码,它的当前哲学(实际上是坏的)是:你对数据库一无所知,你也不会打扰。
更改此行为的唯一方法是编写自定义数据库初始化程序,使用自定义数据库查询搜索已创建的索引,删除该索引并创建新索引。一些参考文献:
initilizer将使您的解决方案依赖于具体的数据库服务器产品。
答案 1 :(得分:9)
是的,有一种方法可以指定不创建聚簇索引。如果使用代码迁移,则会生成* .cs文件以填充DataBase。在此文件中,如果需要使用聚簇索引创建,则可以为每个表指定主键。
.PrimaryKey(t => t.MID, null, true)