2012-04-01 9 views
0

「データベースの最初の」アプローチを使用してエンティティフレームワークのコード生成を行う最善の方法を理解しようとしています。モデルの完全なマスター記述を、テーブルまたは拡張プロパティーのデータベースにアノテーションを格納した実際のデータベーススキーマにしたい。最初のモデルやコードの最初のアプローチには興味がありません。最高品質のソリューションが得られるかどうかを実装するためのカスタムコードを書くことに反対しません。ここにいくつかのアイデアがあります:エンティティフレームワークのコード生成

(1)データベースからEDMXを生成します。カスタムコードを使用して、現在EFに組み込まれていない一意性やその他の制約について、EDMXに注釈を追加します。 T4テンプレートを使用して、EDMXからコードを生成します。

(2)データベースから「コードファースト」クラスを生成するカスタムツールを作成します。ソリューション内にEDMXファイルはありません。

(3)他に何か?

#1はEFの深い知識と#2よりも実際の作業の深い知識を必要とするようですが、大きな利点がある場合は今反対しています。

アドバイスはありますか?

+0

あなたは「コードを最初に」行うことができ、スキーマを生成しないことがわかっていますか?両方の場所で何か変更を加えなくてはいけませんが、DBスキーマと一致するようにクラスを作成するだけです。 – tvanfosson

+0

@Ivan、 "DBスキーマと一致するクラスを作成するだけで済む"という点に関しては、このコードを直接生成するか、EDMXファイルを中間に配置するかが問題です。 –

+0

私は、コードが最初にクラスの形を私に渡し、最初にそのコードがデザイナーからの自動生成されたコードよりもはるかに簡単にテスト可能であることがわかります。実際には、コードが最初に出荷されるまでEFは使用しません。 Linq2SQLはデザイナーを使用した方が優れていました。さて、私はMSSQLの最初の選択肢としてEFコードを使用します。残念ながら、IDE(デザイナーまたはコード)でスキーマ全体を設計するのに適した方法はまだ見つかっておらず、通常はコードファーストモデルでDBファーストを使用しています。 – tvanfosson

答えて

0

テーブルをサーバーエクスプローラーからedmxデザイナーのサーフェイスにドラッグするだけでは簡単にはなりません。それが私のやり方です。私はモデルのカスタマイズをしないので、再生の一部を削除することができます。

0

EFでデータベースからモデルをインポートできます。 EFデザイナーを右クリックし、「データベースからモデルを更新する」オプションを選択します。

もう少しお望みなら、http://radarc.netを試してみてください。スキャフォールディングとCRUDを作成するコード生成ツールです。まず、T4テンプレートとコードを使用して、コードを生成する方法をカスタマイズすることができます。

関連する問題