2

最初にモデルを使用してアプリケーションのクリーンな EF モデルを生成したいのですが、モデルで新しい db スキーマを生成する代わりに、エンティティ内で既存のデータベース テーブルまたは複数のテーブルにテーブル マッピングを手動で実行したいと考えています。これにはメカニズムがありますか?

4

3 に答える 3

1

確かにそうです。

これはEntity Framework Code-Firstと呼ばれ、入門に役立つ優れたチュートリアルです

アイデアは、いくつかの POCO クラスをリポジトリ/データベース クラスとは別に作成することです。このリポジトリ/データベース クラスでは、POCO 間のすべての関係を定義します。さいわい、Entity Framework には、活用できる多くの規則があります。つまり、すべての関係とルールを定義する必要はないかもしれません。

例えば。クラスが呼び出さUserれた場合、(これをオーバーライドしない限り、デフォルトで) データベース テーブルが呼び出さUsersれ、POCO の主キー ID フィールドがUserIdデータベース テーブルと同じであると想定されます。

于 2011-03-21T04:09:04.787 に答える
0

また、EF 4.0 で最初に EF モデルを使用してこのオプションを探しました。また、データベースの規模のために表示することさえできないため、すべてを 1 つの edmx にインポートできない巨大なエンタープライズ レベルのアプリケーションがあるため、小さなクリーンなモデルから始めたいと考えていました。

そのため、最初にモデルをオプションとして検討し、より小さくてクリーンなモデルを構築し、それらをデータベース内の既存のテーブルにマップしたいと考えました。

これが私たちが学んだことです。

モデルは最初に「既存のデータベース」に入るデータベーススキーマを生成します。新しいデータベースを作成すると人々が考えているため、最初は誤解を招く可能性があります。実際にはデータベース自体を作成しません。データベースが存在する必要があり、モデルは最初にデータベースに入る t-sql スクリプトを生成します。

これらのスクリプトは、プロジェクトの新しい .sql ファイルに生成されます。これを表示したり、DBA がある場合は、DBA に送信したりできます。

テーブルが存在しないと仮定して、これらのスクリプトをテーブルの CREATES として生成します。

たとえば、モデルに「顧客」エンティティを作成した場合、CREATE TABLE T-sql を含むスクリプト (*.sql) ファイルが生成され、顧客エンティティの顧客テーブルが作成され、それを実行できます。既存の SQL データベース。

これが、基本的に新しいモデルのクリーンなテーブルを生成するように設計されていることです。

これは、テーブルが既に存在する場合、それをまったく使用できないということですか? いいえ、使えます。生成された Create スクリプトを実行しないだけです。本当にこのために設計されたものだとは思いませんが、これをテストしたところ、うまくいきました。

model first で追加の問題が発生する可能性があり、私たちが発見した制限は、model first が新しい db スキーマを生成するように設計されているため、既存のストアド プロシージャにマップできないことです。これは私たちにとって問題だったので、アーキテクチャのオプションとして最初にモデルを削除しました。

現在、エンタープライズ レベル システムのオプションとしてコード ファーストとデータベース ファーストを検討しており、現時点ではコード ファーストに傾いています。Code first を使用すると、操作できる小さくて管理しやすいコンテキストを作成できます。これは、大規模なエンタープライズ レベルのアプリケーションでは非常に有益です。

于 2013-02-15T16:57:38.900 に答える
0

質問を理解しているかどうかはわかりませんが、ウィザードを使用して新しいエンティティ データ モデルを作成する場合、最初のステップで「データベースから生成」することができ、それを既存の DB にポイントするだけです。次に、不要なテーブルを切り取ったり、テーブル マッピングを手動で変更したりできます。最初に、モデルで表現するテーブルを選択するオプションもあります。

于 2011-02-18T18:37:29.230 に答える