说我有类似......的课程。
public class SomeClass<T> where T : ISomeConstrainingInterface
{
public T MyPropertyOfTypeT {get;set;}
public int SomeIntProp {get;set;}
public string SomeStringProp {get;set;}
}
其中T可以是相当小的有限集合(比如5或6种类型)
在nHibernate中映射此类的最佳和最有效的方法是什么? (使用fluentNHibernate)
答案 0 :(得分:0)
这将为SomeClass的每个类型concreate创建一个单独的表,因此不同的Id类型没有问题,并且外键是可能的。 SomeClass应该实现一个接口,所以可以使用所有接口进行查询和一般处理。
public abstract class SomeClassMapBase<T> : ClassMap<SomeClass<T>>
{
public SomeClassMapBase()
{
Map(x => x.SomeIntProp);
Map(x => x.SomeStringProp);
}
}
public class SomeClassReferencedClassMap : SomeClassMapBase<ReferencedClass>
{
public SomeClassReferencedClassMap()
{
CompositeId()
.KeyReference(x => x.Referenced, "Refernece_id");
}
}