在nHibernate中建模泛型类的最佳方法

时间:2013-08-20 23:26:12

标签: c# nhibernate fluent-nhibernate-mapping

说我有类似......的课程。

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)

1 个答案:

答案 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");
    }
}