sql - 流利的 NHibernate : How to create a clustered index on a Many-to-Many Join Table?

标签 sql nhibernate fluent-nhibernate azure-sql-database

为了在 SQL Azure 上使用我的 Fluent NHibernate 映射,我需要在每个表上都有一个聚集索引。 Fluent NHibernate 为多对多连接创建的默认堆表显然不会这样做,因为它们没有主键。

我希望能够告诉关系的一侧为其连接表创建聚簇索引,但我不确定如何做。这是我的映射的样子:

 public class UserMap : ClassMap<User>{
    public UserMap()
    {
        Table("Users");
        Id(x => x.UserId).GeneratedBy.Identity().Column("UserId");
        Map(x => x.UserName).Unique().Not.Nullable().Length(DataConstants.UserNameLength).Column("UserName");
        Map(x => x.Email).Unique().Not.Nullable().Length(DataConstants.EmailAddressLength).Column("Email");
        Map(x => x.Password).Not.Nullable().Length(DataConstants.PasswordHashLength).Column("Password");
        HasMany(x => x.Clicks).Cascade.AllDeleteOrphan();
        HasManyToMany(x => x.Roles).Cascade.SaveUpdate().Table("UsersInRole").ParentKeyColumn("UserId").
            ChildKeyColumn("RoleId");

    }
}

如果您需要更多信息,请告诉我!

最佳答案

我不知道 Fluent 是否直接支持它(如果不支持,只需包含 xml),但你可以用 Auxiliary Database Objects 来实现

<nhibernate-mapping>
  <database-object>
    <create>create clustered index ix on UsersInRole(UserId, RoleId)</create>
    <drop>drop index UsersInRole.ix</drop>
  </database-object>
</nhibernate-mapping>

关于sql - 流利的 NHibernate : How to create a clustered index on a Many-to-Many Join Table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869586/

相关文章:

sql - 在cte查询sql server 2008中初始化和增加变量

mysql 内连接查询

SQL 减去 2 列 - 具有空值

nhibernate - 是否可以在 NHibernate (>3.0) Linq 的同一查询中调用 IQueryable.To Future() 和 IQueryable.Fetch()?

nhibernate - 手动使 NHibernate 二级缓存失效

nhibernate - Fluent NHibernate - 如何映射两个连接表中存在的不可为空的外键

C#,在不将整个集合加载到内存中的情况下循环遍历 NHibernate 对象的最佳方法

sql - 确定自上次访问 SQL Server 以来的行更改

nhibernate - 流畅的 NHibernate 缓存与自动映射

c# - 我如何让 NHibernate 进行连接?