我一直在尝试从具有复合ID的父实体中引用子实体的列表,并使用PropertyRef指定不同的联接键,例如:
CompositeId().KeyProperty(x => x.Key1, "KEY_1").KeyProperty(x => x.Key2, "KEY_2").KeyProperty(x => x.Key3, "KEY_3");
Map(x => x.MappedProperty, "MAPPED_COLUMN");
HasMany(x => x.Lst).KeyColumn("MAPPED_COLUMN").PropertyRef("MappedProperty");
子实体上的映射是Id(x => x.MappedProperty, "MAPPED_COLUMN")
加上带有Map()
的单个其他属性,没有对父实体的引用。
构建映射时,我不断收到MappingException
和消息property not found: MappedProperty on entity Namespace.Parent
。
这特别令人讨厌,因为我在许多其他父/子类对中使用了相同类型的映射。花了几个小时并获得了几缕白发之后,我尝试删除CompositeId
并用常规的Id
代替(尽管显然这不是数据库的设计方式),如果映射并非一帆风顺地构建!!
问题:这是预期的行为吗?我不明白为什么会这样。也未能在网上找到任何有关此问题的报告,并且文档似乎并未表明HasMany / PropertyRef和CompositeId应该存在任何特定问题。
我正在使用NHibernate NuGet软件包的v5.2.2和FluentNHibernate软件包的v2.1.2。
赞赏任何指针!