0

Microsoft の次のドキュメントの助けを借りて、「データベース ファースト」を使用して EF TPH を実装しようとしています。

http://msdn.microsoft.com/en-us/data/jj618292.aspx

私はこれがどのように機能するかを理解していますが、それが行われた方法が少し素朴に聞こえるか、誰かにこれについて教えてもらいたい何かが欠けています.

私の理解では、データベース ファースト アプローチを実装する全体的なポイントは、既存のデータベースがある場合、またはデータベースで最初に作業を行い、上に向かって作業することを好む場合ですが、このドキュメントでは、継承テーブルが(学生、インストラクター) は、継承されたエンティティが最終的に指す「ディスクリミネーター」フィールドと呼ばれる基本クラスのフィールドを使用して、EF デザイン領域で作成されることを意図しています。

ただし、私の質問は、エンティティ フレームワークを進める前に最初にテーブル構造を直接作成することを意図していた ER デザイナーでこれらの継承されたテーブルを作成する必要があるのはなぜですか。また、ER デザイナーに適用したこの変更はどのようになりますか? (継承されたテーブルを追加する) バックエンド データベースにマップされ、1 日の終わりに後でデータベースに変更を加えたい場合、どこでこれらの変更を行う必要がありますか (MS SQL または ER)デザイナー)。ER側からテーブルを追加することになった場合、それは「データベースファースト」方法論の目的をほとんど無効にします。基本的に「モデルファースト」アプローチの手順を使用することになり、まったく意味がありません.

これを解決するためにあなたの助けをいただければ幸いです。

注意: 私はデータベースですべてを行い、「モデル ファースト」アプローチを使用したくありません。TPH を実装し、データベースに直接変更を加えて、それらの変更を EF サブレイヤーにマップできるようにすることに関心があります (その逆ではありません)。

どうもありがとう

4

1 に答える 1

1

EF が継承をどのように推論できるかわかりません。おそらく、テーブル内の明示的に「Discriminator」という名前のフィールドによってトリガーされる可能性がありますが、ディスクリミネーターに別の名前が必要な場合はどうすればよいでしょうか? では、派生クラスの名前は何にすべきでしょうか? EFには手がかりがありません。名前はデータ モデルのどこにもありません。

それでもデータベースファーストです。しかし、EF はマッピングの最初のドラフトを作成するだけです。ほとんどの場合、プロパティやクラスの名前変更、関連付けの名前変更/追加/削除など、概念モデル (edmx に表示されるモデル) を変更する必要があります。または継承を適用​​します。データベースからモデルを更新する場合、さらに手動で変更を適用する必要がある場合があります。たとえば、TPH 継承では、どのクラスに新しいフィールドを配置するかを決定する必要がある場合があります。

たぶん、「これらの継承されたテーブルを ER デザイナーで作成する必要がある」という考えに少し耳を傾けているかもしれません。1 つの同じテーブルにマップするクラスを定義します。

于 2013-02-23T20:02:19.747 に答える