2009-07-20 6 views
0

S'il vous plaît me croire quand je dis que je comprends ce n'est pas la « bonne » pour le faire. Déposer ceci sous les questions du système grand-complexe-héritage.Comment lier une série de colonnes dans une collection avec NHibernate

Nous avons des tableaux décrivant les données OCR'd des documents. Chaque type de document a sa propre table. Chaque table est générée en fonction des types de champs attendus. Donc, un schéma qui ressemble un peu à ceci:

Table: DocumentTypes 
    Field: Id 
    Field: Prefix 

Table: DocumentFields 
    Field: Id 
    Field: DocId 
    Field: Name 

Et nous générer des tables comme:

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 fonctionne bien pour tous nos autres données, car le schéma est plus statique.

Ma question: Est-il tout possible de configurer NHibernate pour charger un des DataTables et lier la série de champs dans une collection? Si c'est le cas, à quelles interfaces dois-je commencer à regarder?

Mon idée est d'avoir une classe qui est quelque chose comme:

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

Je l'ai regardé « IInterceptor » un peu et je pense que c'est là que je devrais regarder d'abord. Mais avant d'y investir des jours, j'ai voulu le faire tourner par la foule SO.

Merci!

Répondre

1

Si le schéma n'est pas statique, il sera difficile pour nhibernate de créer même la requête - et les intercepters ne peuvent pas vous y aider en ce qui me concerne. J'irais avec CreateSQLQuery pur et manipuler les valeurs retournées manuellement après.

+0

Parfait, je peux l'utiliser pour lier les propriétés qui SONT statiques puis peupler ma collection les colonnes dynamiques. – hometoast

+0

Et là j'étais sur la bonne voie pour l'insigne tumbleweed! :) – hometoast

+0

Oh ... Je suis tellement désolé que vous ne l'avez pas compris;) – asgerhallas

Questions connexes