如何使用fluentNHibernate映射NHibernate自定义集合?
我试图绘制收藏地图两天都没有成功。我也读了所有可能的文章和论坛,但仍然在那里。好的,问题是: 1) collection类包含一个私有字段“\u internalCollection”,该字段与NHib映射 2) 持有实体应公开集合槽只读属性 3) 我想避免实现NHibernate接口IUserCollectionType 我用xml映射实现了这一点,效果非常好。仓库实体是一个集合项。仓库是OrgEntity类中的只读属性如何使用fluentNHibernate映射NHibernate自定义集合?,nhibernate,collections,fluent-nhibernate,nhibernate-mapping,Nhibernate,Collections,Fluent Nhibernate,Nhibernate Mapping,我试图绘制收藏地图两天都没有成功。我也读了所有可能的文章和论坛,但仍然在那里。好的,问题是: 1) collection类包含一个私有字段“\u internalCollection”,该字段与NHib映射 2) 持有实体应公开集合槽只读属性 3) 我想避免实现NHibernate接口IUserCollectionType 我用xml映射实现了这一点,效果非常好。仓库实体是一个集合项。仓库是OrgEntity类中的只读属性 <component name="Warehouses" cl
<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接口的类。请尝试:
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");
});
组件(x=>x.仓库,m=>
{
m、 HasMany(揭示成员(“\u internalCollection”)
.AsSet().KeyColumn(“仓库组织”)
.ForeignKeyConstraintName(“FK_OrgWarehouse”);
});
我肯定不是这样的,但希望它能让你走上正确的道路。也可以看看使用
我的建议是完全避免自定义集合。我用
IEnumerable
上的扩展方法替换了我们所有的方法。这不起作用。这里没有提到属性的名称。映射字段的流畅程度如何?仓库不是ISet类型,而是EntitySet类型。我认为这会起作用。必须运行所有测试并查看它是否为修订版eal类就是我要找的…10x组件(x=>x.Departments,m=>{m.HasMany(leaver.Member(“\u internalCollection”)).Access.Field().KeyColumn(“DepartmentOrgId”).ForeignKeyConstraintName(“FK\u OrgDepartment”).AsSet()});一个问题。您能否使用IEnumerable和扩展方法+添加属性SelectedItem和此SelItem以映射到NHibernate。如果可能,我将接受您的建议…我不理解这个问题,您可能应该将其作为一个新问题来问以获得答案。我使用扩展方法来筛选集合。您的扩展如何用于将项添加到IEnumerable中,如图所示?