2011-07-22 3 views
3

Entity Framework 4モデルをしばらく使用していて、最終的に基盤となるデータベースを別のベンダの製品(SQL ServerからMySQLなど)に切り替える必要がある場合、テーブルと列を調整するのは簡単ですエンティティクラスコードのいずれかを更新する必要なく、エンティティモデル内のマッピング?Entity Frameworkモデルの最初のデザインでは、テーブルのマッピングを編集できません。

私たちはできるだけデータベースにとらわれないコードを設計しようとしていますので、私たちがデータベースを切り換えた場合、どのくらいの問題があるかを事前に知りたいと思います。理想的には、エンティティクラスを使用するアプリケーションに触れないようにしたいと考えています。エンティティデザイナやXMLエディタで、基になるデータベースの列名を調整してエラーが出ることがないようには思えません。

(単独のデータベースの列名を残したまま、私は、しかし、デザイナーにエンティティのプロパティ名を編集することができますが、それは私が必要なものの反対です。)

ありがとう!

+0

なぜ同じ列名を作成しないのですか? – ysrb

+0

データベースを生成せずに最初のEFコードを試してみましたか? – tvanfosson

+0

@ysrb - 理想的には、同じ列名を使用するのは私たちがやることです。しかし、私はEF4.1と社内で組み立てられたフレームワークを比較していますが、まったく滑らかではありません。しかし後者は、エンティティオブジェクトからテーブルとカラムに名前マッピングを簡単に変更できるようにします。データベースにとらわれないアプローチに賛成する私たちのCIOは、その柔軟性を本当に好んでいます。だから、私たちがEntity Frameworkの機能に似た能力を持っていれば私は不思議です。しかし、それ以外は素晴らしい提案です。 – Derek

答えて

2

EDMXはデータベースに依存しません。 EDMXのSSDL部分は、データベースサーバと密接に結びついています(MSSQLのバージョンであっても)。サポートされるデータベースサーバーごとに個別のSSDLが必要です。

列名の変更がデータベースに依存しないモデルにどのように関係しているかわかりません。リバースは真です!異なるサーバー製品に異なる列名を使用するようにデータベースを必要とする場合は、それぞれに個別のマッピングが必要です。

データベース作成SQLスクリプトの生成に使用するT4テンプレートを変更する場合にのみ、モデルを最初に使用するときに列名を変更することができます。しかし、スクリプトデザイナーを作成するたびに、ストレージ記述(SSDL)とマッピング(MSL)全体が削除され、新しいものに置き換えられます。

データベースに依存しないコードを作成する最も簡単な方法は、まずコードを使用していますが、それでもサーバー間の種類や機能の不一致に問題が生じる可能性があります。

データベースに依存しないORMが必要な場合は、おそらくNHibernateをチェックしてください。

+0

はい、あなたはデータベースにとらわれない点については正しいです。列名を変更することは、実際にはあまり関係がありません。実際、あるベンダーから別のベンダーにデータベースを移動する場合、おそらくテーブルと列の構造を新しいシステムに可能な限り同一に保つよう努めています。 最終的には、私たちの面倒な自家製システムが持つ列名のマッピングにEF4.1が同じ柔軟性を持たせるかどうかを見たいと思っていました。私はあなたが私の質問に完全に答えたと思う。ありがとう! – Derek

関連する問題