「データベースの最初の」アプローチを使用してエンティティフレームワークのコード生成を行う最善の方法を理解しようとしています。モデルの完全なマスター記述を、テーブルまたは拡張プロパティーのデータベースにアノテーションを格納した実際のデータベーススキーマにしたい。最初のモデルやコードの最初のアプローチには興味がありません。最高品質のソリューションが得られるかどうかを実装するためのカスタムコードを書くことに反対しません。ここにいくつかのアイデアがあります:エンティティフレームワークのコード生成
(1)データベースからEDMXを生成します。カスタムコードを使用して、現在EFに組み込まれていない一意性やその他の制約について、EDMXに注釈を追加します。 T4テンプレートを使用して、EDMXからコードを生成します。
(2)データベースから「コードファースト」クラスを生成するカスタムツールを作成します。ソリューション内にEDMXファイルはありません。
(3)他に何か?
#1はEFの深い知識と#2よりも実際の作業の深い知識を必要とするようですが、大きな利点がある場合は今反対しています。
アドバイスはありますか?
あなたは「コードを最初に」行うことができ、スキーマを生成しないことがわかっていますか?両方の場所で何か変更を加えなくてはいけませんが、DBスキーマと一致するようにクラスを作成するだけです。 – tvanfosson
@Ivan、 "DBスキーマと一致するクラスを作成するだけで済む"という点に関しては、このコードを直接生成するか、EDMXファイルを中間に配置するかが問題です。 –
私は、コードが最初にクラスの形を私に渡し、最初にそのコードがデザイナーからの自動生成されたコードよりもはるかに簡単にテスト可能であることがわかります。実際には、コードが最初に出荷されるまでEFは使用しません。 Linq2SQLはデザイナーを使用した方が優れていました。さて、私はMSSQLの最初の選択肢としてEFコードを使用します。残念ながら、IDE(デザイナーまたはコード)でスキーマ全体を設計するのに適した方法はまだ見つかっておらず、通常はコードファーストモデルでDBファーストを使用しています。 – tvanfosson