如何停止EF4.1 Code-First为实体PK创建Culstered索引
通过以下简单的实体类,EF4.1 Code-First 将在初始化数据库时为 PK UserId
列创建聚集索引。
public class User
{
[Key]
public int UserId { get; set; }
public int AppId { get; set; }
public string UserName { get; set; }
}
出于性能考虑,我的设计目标是根据 AppId
保持生成的 Users
表物理集群,而不是根据 PK。
在我的初始化器类上,我尝试手动删除自动生成的 PK 聚集索引并创建我需要的任何聚集索引,但这里没有任何线索来预测索引的自动生成名称 PK__Users__25518C17
!
我是代码优先世界的新手,真的不知道是否有任何解决方法可以实现我的设计目标。
提前致谢
With the following simple entity class, EF4.1 Code-First will create Clustered Index for the PK UserId
column when intializing the database.
public class User
{
[Key]
public int UserId { get; set; }
public int AppId { get; set; }
public string UserName { get; set; }
}
For performance sake, my design goals is to keep the generated Users
table physical Clustered according to the AppId
coulmn not to the PK.
On my Initializer class I've tried to manually drop the autogenerated PK clustered index and create whatever clustered index I need, but no clue here to predict the autogenerated name PK__Users__25518C17
for the index!
I'm new to Code-First world, and really don't know if there's any workaround for my design goals.
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不需要预测自动生成的索引的名称。您只需要选择索引的名称。对于 SQL Server,您可以使用如下查询:
在自定义初始值设定项中获取名称后,您可以更改旧索引并创建新索引。
You don't need to predict name of auto generated index. You just need to select name of the index. For SQL server you can use query like:
Once you get the name in your custom initializer you can alter old index and create a new one.