我有一个映射类,它通过映射中的ReferencesAny通过接口引用了许多其他类。 只要其他类具有普通的单列主键,这种方法就可以正常工作。 现在我需要通过相同的接口引用一个新类,它有一个组合的主键,由两列组成。
这可能吗?
Class1映射:
public class Class1Map : ClassMap<Class1>
{
public Class1Map()
{
Table("Class1");
Id(x => x.Id, "Id").GeneratedBy.Native().UnsavedValue(0);
}
}
引用类映射:
public class RefClassMap : ClassMap<RefClassMap>
{
public RefClassMap()
{
Table("RefClass");
Id(x => x.Id, "Id").GeneratedBy.Native().UnsavedValue(0);
ReferencesAny(x => x.Reference)
.AddMetaValue<Class1>("Class1")
.EntityTypeColumn("RefType")
.EntityIdentifierColumn("RefId")
.EnittyType<int>()
.Cascade.None();
}
}
(RefClass.Reference的类型为IInterface,Class1实现了IInterface)
这很有效,但是如何添加Class2作为可能的参考。 (Class2也实现了IInterface)
Class2映射如下所示:
public class Class2Map : ClassMap<Class2>
{
public Class2Map()
{
Table("Class2");
CompositeId()
.KeyReference(x => x.KeyPart1, "KeyPart1")
.KeyReference(x => x.KeyPart2, "KeyPart2")
.Mapped();
}
}
我不确定这是否可行,但可能是将entitytype更改为string并对复合键进行某种映射?
有什么建议吗?
答案 0 :(得分:0)
缺乏答案和我自己的进一步研究表明这是不可能的。无论如何,我最终找到了解决方法。