gpt4 book ai didi

nhibernate - 如何使用 fluentNHibernate 映射 NHibernate 自定义集合?

转载 作者:行者123 更新时间:2023-12-04 06:50:34 27 4
gpt4 key购买 nike

我试图将集合映射两天但没有成功。我还阅读了所有可能的文章和论坛,但仍然在那里。好的,问题来了:

1) 集合类包含一个私有(private)字段“_internalCollection”,它与 NHib 映射。

2) 控股实体应通过只读属性公开收集槽。

3)我想避免实现NHibernate接口(interface)IUserCollectionType!!!

我用 xml 映射做到了这一点,效果很好。 WarehouseEntity 是一个集合项。 Warehouses 是 OrgEntity 类中的只读属性。

  <component name="Warehouses" class="Core.Domain.Collections.EntitySet`1[Core.Domain.OrgStructure.IWarehouseEntity,Core],Core">
<set name="_internalCollection" table="`WAREHOUSE`" cascade="save-update" access="field" generic="true" lazy="true" >
<key column="`WarehouseOrgId`" foreign-key="FK_OrgWarehouse" />
<!--This is used to set the type of the collection items-->
<one-to-many class="Domain.Model.OrgStructure.WarehouseEntity,Domain"/>
</set>
</component>

知道如何使用流利的 NHibernate 来做到这一点吗?

编辑:Core.Domain.Collections.EntitySet`1 是基础集合类。它提供了使用集合的基本功能,并且可以适合任何 IEntity 接口(interface)的类。

最佳答案

尝试:

HasMany(x => x.Warehouses)
.AsSet().KeyColumn("WarehouseOrgId")
.Access.CamelCaseField(Prefix.Underscore)
.ForeignKeyConstraintName("FK_OrgWarehouse");

编辑:我错过了问题的一个关键部分,所以这是另一个尝试:
Component(x => x.Warehouses, m =>
{
m.HasMany<Warehouse>(Reveal.Member<EntitySet<IWarehouseEntity>>("_internalCollection")
.AsSet().KeyColumn("WarehouseOrgId")
.ForeignKeyConstraintName("FK_OrgWarehouse");
});

我确定不是这样,但希望它能让你走上正确的道路。也看看使用 ComponentMap .

我的建议是完全避免自定义集合。我用 IEnumerable<T> 上的扩展方法替换了我们所有的.

关于nhibernate - 如何使用 fluentNHibernate 映射 NHibernate 自定义集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175712/

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