1

我正在使用具有自动映射和约定的 FluentNH。我建立了一个多对多的约定:

    public class HasManyToManyConvention : IHasManyToManyConvention
    {
        public void Apply(IManyToManyCollectionInstance instance)
        {
            instance.Key.Column(instance.EntityType.Name + "Id");
            instance.Relationship.Column(instance.Relationship.StringIdentifierForModel + "Id");
        }
    } 

假设这些是我的表: User(Id,Username,Password), Role(Id,Name)

数据库生成后,关联表生成良好: UserInRole(UserId,RoleId)

但是,它没有复合主键集。知道如何从公约中解决这个问题吗?

任何人?可能是目前 Fluent 不支持此功能?

4

1 回答 1

0

事实证明,公约应该保持不变。但是,我现在使用 ISet<User> 和 ISet<Role>,而不是在我的实体定义中使用 IList<User> 和 IList<Role>。现在 NHibernate 将自动在关联表上创建一个复合主键。

于 2013-02-03T13:46:25.180 回答