私は、必要に応じて列を追加してテーブルを動的に増やすレガシーシステムを持っています。今私はC#/ NHibernate経由で上記のテーブルにアクセスしたいと思います。
レガシーシステムの動作を変更する方法はなく、追加の列のデータを動的に処理する必要があります。したがって、追加の列の正確な名前がわからないので、動的コンポーネントマッピングはオプションではありません。未知数の列を辞書にマップする
マッピングされていないすべての列を辞書に入れる方法はありますか?それともオプションではない場合は、すべての列を辞書に入れますか?
この場合も、コンパイル時に列名がわからないため、これは完全に動的でなければなりません。
例:
だからpublic class History
{
public Guid Id { get; set; }
public DateTime SaveDateTime { get; set; }
public string Description { get; set; }
public IDictionary<string, object> AdditionalProperties { get; set; }
}
テーブル履歴列イド、SaveDateTime、説明、、B、CとD Iが含まれている場合であろうIDictionaryに "A"、 "B"、 "C"、 "D"を持つようにします。それが難しいのであれば、そこにすべての列を投げるだけです。
初心者にとっては、文字列を使用しても問題ありません。
しかし、動的に検出してすることが可能ですプロセステーブルメタデータ。それに応じてinsert文を変更します。この情報を使用して、 "classic" ado.netを使用してinsert文を変更および/または動的にアセンブルすることは可能です。問題は、これはNHibernateを使って行うことができるのですか?あるいは、NHibernateはこれを行うための何らかの自動化を提供します。 –
私はそうは思わないが、わからない。あなたはnhibernateユーザグループhttp://groups.google.com/group/nhusersで質問することができます – Paco