具有泛型参数的基类的流畅Nhibernate映射字段成员

时间:2011-02-14 02:52:33

标签: c# nhibernate fluent-nhibernate

我正在尝试执行一个相当简单的ChildClass映射,我不想让持久层知道类层次结构。

public class BaseClass<T>
{
    public int Id { get; set; }
    public int A;
}

public class ChildClass : BaseClass<object>
{

}

public class ChildClassMap : ClassMap<ChildClass>
{
    public ChildClassMap()
    {
        Not.LazyLoad();
        Id(x => x.Id);
        Map(x => x.A)
            .Access.Field()
            ;
    }
}

这里的问题变量是A.当我尝试构建sessionfactory时,我得到了:

NHibernate.PropertyNotFoundException : Could not find field 'A' in class  'Experiments.ChildClass'

到目前为止,我找到了两种方法来解决这个问题。

  1. 从BaseClass

    中删除泛型参数
    public class BaseClass { ...
    
    public class ChildClass : BaseClass { ...
    
  2. 使用Property Access而不是field。

    public class BaseClass {
       ...
       public int A { get; set; }
    
    public class ChildClassMap : ClassMap<ChildClass> {
       ...
       Map(x => x.A)
          .Access.Property()
          ;
    
  3. 我假设这是一个问题,因为对泛型类型的反思(尽管如果这是NHibernate的故意设计决定,我想了解原因)。

    目前我只是作为一个属性进行映射(使用解决方法#2) - 但是有什么办法可以在fluent-nhibernate中映射我的第一个例子吗?

0 个答案:

没有答案