如何停止EF4.1 Code-First为实体PK创建Culstered索引

发布于 2024-11-03 11:20:05 字数 529 浏览 1 评论 0原文

通过以下简单的实体类,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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最近可好 2024-11-10 11:20:05

您不需要预测自动生成的索引的名称。您只需要选择索引的名称。对于 SQL Server,您可以使用如下查询:

SELECT I.Name
FROM sys.indexes AS I
INNER JOIN sys.tables AS T ON
    I.object_Id = T.object_Id
WHERE I.is_primary_key = 1 
    AND T.Name = 'Users'

在自定义初始值设定项中获取名称后,您可以更改旧索引并创建新索引。

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:

SELECT I.Name
FROM sys.indexes AS I
INNER JOIN sys.tables AS T ON
    I.object_Id = T.object_Id
WHERE I.is_primary_key = 1 
    AND T.Name = 'Users'

Once you get the name in your custom initializer you can alter old index and create a new one.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文