gpt4 book ai didi

fluent-nhibernate - 如何使用 Set 而不是 Bag 设置 Fluent NHibernate 多对多自动映射?

转载 作者:行者123 更新时间:2023-12-03 03:43:49 26 4
gpt4 key购买 nike

http://www.codinginstinct.com/2010/03/nhibernate-tip-use-set-for-many-to-many.html

我想按照作者建议的流畅 nhibernate 多对多的方式进行操作,但使用自动映射而不是 HBM 文件。

这是我的两个实体

 public class User
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Iesi.Collections.Generic.Set<City> Cities { get; set; }

}

public class City{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Iesi.Collections.Generic.Set<User> Users { get; set; }

}

尝试过 HashSet、IList 和 Set。但是当我查看调用自动映射输出方法生成的HBM文件时:

 var autoMappings = new AutoPersistenceModel().AddEntityAssembly(entityAssembly).Where(x => x.Namespace.EndsWith("Domain"));

autoMappings.WriteMappingsTo((@"C:\TEMP");

依然是包包型

<bag inverse="true" name="Users" table="MNUserCity" mutable="true">
<key>
<column name="CityId" />
</key>
<many-to-many class="MyApp.Entity.Domain.User, MyApp.Entity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="UserId" />
</many-to-many>
</bag>

我可以在 Fluent NHibernate 中使用任何约定/覆盖来更改应用程序域中所有 ManyToMany 的集合类型吗?我查看了 IHasManyToMany 约定,但没有任何线索。

有人可以帮忙吗?谢谢。

顺便说一句,我正在使用 http://github.com/jagregory/fluent-nhibernate 中的最新版本

最佳答案

UsersCities 的类型从 Set 更改为 ISet 应该可以解决您的问题。

正如James所述在这个thread“自动映射器非常固执且不灵活,它希望将集合公开为 IList 或 ISet。”

关于fluent-nhibernate - 如何使用 Set 而不是 Bag 设置 Fluent NHibernate 多对多自动映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2480033/

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