nhibernate动态绑定一个类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nhibernate动态绑定一个类相关的知识,希望对你有一定的参考价值。

我已经阅读了this article,并且正在寻找一种方法来在运行时动态更改我的映射,以使用依赖于父对象中的值的一对多来绑定到不同的表。

这是我的映射

 <bag name="Data" mutable="true" >
     <key>
       <column name="Log_Link" />
       <column name="channel" />
     </key>
   <one-to-many class="Fluent.Entities.Meters.FTIMeterChannelData, Poco" entity-name="30" />
 </bag>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="property" auto-import="true" default-cascade="none" default-lazy="true">
  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Fluent.Entities.Meters.FTIMeterChannelData, Poco" table="loggerData" entity-name="30">
    <composite-id mapped="false" unsaved-value="undefined">
      <key-property name="Channel" type="System.Int32">
        <column name="channel" />
      </key-property>
      <key-property name="LogLink" type="System.Int32">
        <column name="Log_Link" />
      </key-property>
    </composite-id>
    <property name="Date" type="System.DateTime">
      <column name="hhdate" />
    </property>
  </class>

  <class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Fluent.Entities.Meters.FTIMeterChannelData, Poco" table="loggerData10" entity-name="15">
    <composite-id mapped="false" unsaved-value="undefined">
      <key-property name="Channel" type="System.Int32">
        <column name="channel" />
      </key-property>
      <key-property name="LogLink" type="System.Int32">
        <column name="Log_Link" />
      </key-property>
    </composite-id>
    <property name="ReadingType" type="System.Char">
      <column name="readingtype" />
    </property>
  </class>
</hibernate-mapping>

现在正如文章所述,我应该能够使用拦截器更改实体名称

 class LoggerDataInterceptor : EmptyInterceptor
    {
        public override string GetEntityName(object entity)
        {
            return Convert.ToString("20");
        }
    }

现在问题是两个问题。

首先,我似乎无法让这个拦截器开火,尽管在打开我的会话时宣布它,其次我完全狂吠,这是不会有用的?

答案

我可以就第一个问题发表评论。打开会话时是否通过了拦截器?

config.SetInterceptor(new yourInteceptor());

.........

if (config.Interceptor != null)
{
     session = factory.OpenSession(config.Interceptor);
}
     else
{    
     session = factory.OpenSession();
}

以上是关于nhibernate动态绑定一个类的主要内容,如果未能解决你的问题,请参考以下文章

从编译器角度理解虚函数静态绑定和动态绑定

从编译器角度理解虚函数静态绑定和动态绑定

Xamarin AAR结合。某些类不包含在绑定中

iOS开发笔记系列-基础3(多态动态类型和动态绑定)

有没有更聪明的方法将布局绑定到片段?

第9章 多态动态类型和动态绑定(Objective-C 程序设计)