代码之家  ›  专栏  ›  技术社区  ›  hometoast

如何用NHibernate将一系列列绑定到集合中

  •  0
  • hometoast  · 技术社区  · 15 年前

    拜托 相信我,当我说我明白这不是“正确”的方式做这件事。将其归档到大型复杂的遗留系统问题下。

    我们有描述文档OCR'D数据的表。每个文档类型都有自己的表。每个表都是根据它期望的字段类型生成的。所以有一个看起来有点像这样的模式:

    Table: DocumentTypes
       Field: Id
       Field: Prefix
    
    Table: DocumentFields
       Field: Id
       Field: DocId
       Field: Name
    

    我们将生成如下表:

    Table: Type1_Data_Unit1000
       Field: Id
       Field: DocId
       Field: DocField_A_Data
       Field: DocField_A_Info1
       Field: DocField_A_Info2
       Field: DocField_Z_Data
       Field: DocField_Z_Info1
       Field: DocField_Z_Info2
    

    nhibernate对于我们的所有其他数据都很好地工作,因为模式更为静态。

    我的问题: 是否可以配置nhibernate以加载其中一个数据表并将一系列字段绑定到集合中?如果是,我应该从哪个接口开始查看?

    我的想法是举办一个类似于:

    class FormData
    {
       public virtual int Id {get;set;}
       public virtual int DocId {get;set;}
       public virtual int Id {get;set;}
       public virtual IList(Of FormFieldData) {get;private set;}
    }
    
    class FormFieldData
    {
       public virtual int Id {get;set;}
       public virtual string Value {get;set;}
       public virtual int Info1 {get;set;}
       public virtual int Info2 {get;set;}
    }
    

    我看了一下“iInterceptor”,认为这是我应该首先看的地方。但在投入数天时间之前,我想让这么多人来管理它。

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  1
  •   asgerhallas    15 年前

    如果模式不是静态的,那么nHibernate甚至很难创建查询——据我所知,拦截器无法帮助您实现这一点。我将使用纯createSqlQuery,然后手动操作返回的值。