gpt4 book ai didi

nhibernate - Fluent NHibernate多对多在链接表上创建聚集索引

转载 作者:行者123 更新时间:2023-12-03 16:48:42 24 4
gpt4 key购买 nike

我有两个多对多关系的实体。

 public class SecurityGroupMappingOverride : IAutoMappingOverride<SecurityGroup>
{
public void Override(AutoMapping<SecurityGroup> mapping)
{
mapping.HasManyToMany(x => x.Actions).ParentKeyColumn("securityGroupId").ChildKeyColumn("actionId").
LazyLoad().Table("ActionGroups");

mapping.HasManyToMany(x => x.Members).ParentKeyColumn("securityGroupId").ChildKeyColumn("userId").
LazyLoad().Inverse().Table("UserGroups");

mapping.Map(x => x.Name).Length(64);

}
}

所以我想在表 UserGroups 的两列(userId、securityGroupId)上创建一个聚集索引。

或者只是在它们的两列上的 UserGroups 上创建主键,因为同时不能是两个相同的链接。

谢谢

最佳答案

我假设你想要 NHibernate 的 SchemaExport为您生成这些索引/键的工具。

对于多对多 (FluentNHibernate 的默认集合类型),SchemaExport 生成:

create UserGroups (
securityGroupId INT not null,
userId INT not null,
)

对于多对多 ,它产生:
create UserGroups (
securityGroupId INT not null,
userId INT not null,
primary key (securityGroupId, userId)
)

... 所以只需添加 .AsSet()到您的映射。
mapping.HasManyToMany(x => x.Members)
.AsSet()
// ... etc.

如果您考虑一下包袋和套装是什么,那真的很有意义。集合的元素应该是唯一的,而包没有唯一性要求。

关于nhibernate - Fluent NHibernate多对多在链接表上创建聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3414075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com