2012-02-15 5 views
1

NHibernateを数年間使用した後、次のプロジェクトで使用するためにEntity Frameworkを学習しています。現時点では、コードファーストアプローチとモデルファーストアプローチのどちらかを決定しようとしています。モデルファーストのアプローチは私には魅力的ですが、その結果はORMに依存しなくてはなりません。このために、私は次のことを熟考しています。 .edmxファイルのCSDLおよびC-Sマッピングコンテンツからクラスと.hbm.xmlファイル(NHibernateで使用するため)を生成するT4テンプレートを作成することは可能で実用的でしょうか?エンティティデータモデル(.edmxファイル)はORMに依存しませんか?

答えて

3

これはORM APIに含まれているため、またはNHibernateのhbmファイルを使用してEntityフレームワークを参照していたため、マッピングはORMに依存しませんでしたか? EDMXは、MS資産であるEDM(Entity Data Model)のXML表現であり、主にMS APIに使用されます。さらに、MSによって提供されるEDM処理のためのすべてのAPIがアクセス可能であるとは限らない(内部実装)。 EDMXはORMにとらわれない悪い点は、データベースにとらわれないことさえありません。

とにかく、EDMXを入力とし、出力として他のマッピングを提供するカスタムツールや変換を作成することができます。入力と出力の形式を理解するだけです。私はそれがT4で直接可能かどうかは分かりませんが、確かに可能です。しかし、それは実用的ではありません。実用的なのは、そのORMで利用可能なフルパワーとツールを使用して単一のORMを使用することです。

+0

EDMXが単にXMLファイルとして扱われる場合、それはEntity Framework APIを使用していません、正しいですか?私はそれが.NETの全体であるため、一般的にMS APIの無関係なままにしようとはしません。 – HappyNomad

+0

まあ、NHibernateと他のORMはEDMXを使用できないので、それは不可知論ではありません。 XMLであり、変換を作成できるという事実はそれを変更するものではありません。 ESQLクエリを含むEFの高度な機能を使用することになるので、私は簡単にEDMXを書くことができます。 EDMXから他の何かへの変換について考えているIMHOはそれに値するものではありません。ほとんどの場合、これらのhbmファイルを手動でより高速に作成します。 –

+0

このアプローチではうまくいかないORMには何がありますか? ESQLについてのあなたの意見は良いことです。興味深いもの: – HappyNomad

2

.edmxファイルからFluent NHibernate用のクラスを生成するT4テンプレートを作成することは可能であり、実用的です。私はちょうどそれをやっているAMDのプロジェクトに就いています。参照してください:http://tom-jaeschke.blogspot.com/2011/08/use-entity-framework-and-nhibernate.html

+0

私は逆を行う可能性を検討しています - 私は、MS EDMに依存する特定のAPIを使用することができるように、私はEDMX等価物を生成したいNHibernate層(NHQueryable)を確立しています.Data.OData.Query)。 – lesscode

関連する問題