次の要件を考慮して、ORMを活用しようとしています。
1).NET Frameworkの使用(最新のFrameworkで問題ありません)
2)Sybase、Oracle、MSSQLを互換的に使用できる必要があります
3)スキーマはほとんど静的ですが、動的な部分があります。
私はSubSonicとNHibernateにある程度精通していますが、深くは知りません。
ORMは自分のやりたいことができるというしつこい感じがしますが、今のところそれを活用する方法がわかりません。
SubSonicは現在Sybaseをサポートしていないため、おそらく最適ではありません。独自のプロバイダーを作成することは、現在のところ私のリソースと能力を超えています。
#3(上記)の場合、ベンダーが既存のデータベースに「固定」できるテーブルを説明するメタデータテーブルがいくつかあります。これらのMetaTablesとMetaFields
を
呼び出しましょう。
ORM(NHibernate ATM)が適切に処理する基本静的スキーマがあります。
ただし、ベンダーは、メタデータテーブルにデータを追加して構造を説明する限り、データベースにテーブルを(物理的に)追加できます。
私が本当に望んでいるのは、ORMにそのメタデータを(理解できる方法で)何らかの形で「フィード」し、その時点でデータを操作できるようにすることです。
私の主な目標は、これらの動的テーブルで実行する必要のある汎用SQLステートメントの作成量を減らすことです。
また、Sybase、Oracle、またはMSSQLに送信されるSQLの違いについて心配する必要はありません。
私の主な問題は、メタデータにアクセスできる実行時まで、動的テーブルについてORMに通知する方法がないことです。
編集:使用法の例は、ここで概説されているようなものかもしれません:
IDataReader rdr = new Query( "DynamicTable1")。WHERE( "ArbitraryId"、2).ExecuteReader();
(ただし、Sybaseプロバイダーがないため、SubSonicが機能するようには見えません(上記を参照)