Как связать серию столбцов в коллекцию с помощью NHibernate - PullRequest
0 голосов
/ 20 июля 2009

Пожалуйста, , поверьте мне, когда я говорю, что понимаю, что это не "правильный" способ сделать это. Подайте это под вопросами о крупно-сложных-устаревших системах.

У нас есть таблицы, описывающие данные документов OCR. Каждый тип документа имеет свою собственную таблицу. Каждая таблица генерируется на основе ожидаемых типов полей. Итак, есть схема, которая выглядит примерно так:

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 для загрузки одного из DataTables и связать ряд полей в коллекцию? Если да, то на каких интерфейсах мне начать искать?

Моя идея в том, чтобы иметь класс, похожий на:

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;}
}

Я немного посмотрел на "IIterceptor" и думаю, что именно туда я и должен смотреть в первую очередь. Но перед тем, как вкладывать в это дни, я хотел, чтобы он управлял этой толпой.

Спасибо!

1 Ответ

1 голос
/ 24 июля 2009

Если схема не статична, тогда для nhibernate будет трудно даже создать запрос - и, насколько я понимаю, перехватчики не смогут вам там помочь. Я бы пошел с чистым CreateSQLQuery и вручную манипулировал возвращаемыми значениями.

...