2

假设我有一堂课……

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)

4

1 回答 1

0

这将为 SomeClass 的每种类型创建一个单独的表,因此不同的 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");
    }
}
于 2015-10-14T15:09:12.910 回答