必要に応じて追加の列でテーブルを動的に拡張する従来のシステムがあります。ここで、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; }
}
したがって、テーブル History に列Id、SaveDateTime、Description、A、B、C、およびDが含まれている場合、 IDictionary に「A」、「B」、「C」、および「D」が必要です。または、それが難しすぎる場合は、すべての列をそこに投げ込むだけです。
手始めに、それが役立つ場合は、文字列列のみを使用しても問題ありません。