2009-07-20 7 views
0

私はこれを行うには "正しい"方法ではないと私は信じています。大規模で複雑なレガシーシステムの質問の下でこれを提出してください。NHibernateを使って一連の列をコレクションにバインドする方法

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のは、当社の他のすべてのデータに適していますが。

私の質問:はDataTableのの1をロードし、コレクションに一連のフィールドをバインドするために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」少し見て、私が最初に見なければならないところだと思うしました。しかし、それに日を投資する前に、私はSOの群衆によってそれを実行したかった。

ありがとうございます!

答えて

1

スキーマが静的でない場合、nhibernateがクエリを作成することさえ難しくなります - そして、インターセプタは、私が懸念している限り、そこであなたを助けることはできません。私は、純粋なCreateSQLQueryを使用し、後で手動で戻り値を操作します。

+0

パーフェクト、私は静的なプロパティをバインドするために使用することができますし、私のコレクションに動的な列を設定します。 – hometoast

+0

ここに私はtumbleweedバッジのために進んでいた! :) – hometoast

+0

ああ...私はあなたがそれを取得しなかったことを残念です;) – asgerhallas

関連する問題