6

Fluent APIに関するチュートリアルはたくさんありますが、それらはすべてEntityFrameworkCode-Firstのコード例を使用して説明しています。私はCode-Firstを知らないので、EF Database-Firstアプローチを使用して主題を説明するFluentAPIチュートリアルを知っていますか?

ありがとうございました

4

3 に答える 3

8

Fluent APIはコードファーストアプローチ専用に作成されているため、データベースファーストアプローチと一緒にFluentAPIを説明するチュートリアルはありません。Database-Firstを介してモデルを作成する場合は、FluentAPIは必要ありません。

Fluent API(Code-Firstデータアノテーションおよび規則とともに)は、プロパティが必要な場合、または関係のタイプ(多対多、1対多)の場合、文字列の長さなどのモデルの詳細をコードで定義するためのツールです。 、など。Database-FirstまたはModel-Firstを使用する場合、EDMXファイルには同じ目的があります。モデルのすべての詳細とマッピング定義が含まれています。Fluent API(+データ注釈と規則)は、Code-Firstを使用する場合にのみEDMXファイルを置き換えます。

Database-FirstまたはModel-Firstを使用してモデルを作成すると、モデルを表すEDMXファイルが作成されます。T4DbContextGeneratorをこのEDMXファイルに適用できます。生成されたファイルには、Code-Firstとは異なる2つの特性があります。

  • 生成された接続文字列には、アセンブリに埋め込まれるEDMXメタデータを参照するセクションが含まれています。

    connectionString="metadata=res://*/Model.csdl
                              |res://*/Model.ssdl
                              |res://*/Model.msl;
                      ..."
    
  • 生成されたコンテキストには、例外をスローするだけDbContextのオーバーライドされたメソッドがあります。OnModelCreating

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
    

接続文字列にメタデータセクションを残している限り、EFはOnModelCreatingこのメソッドでFluentAPIのコードを呼び出しません。メタデータセクションは、モデルがDBまたはモデルファーストであり、メタデータがFluentAPIではなく組み込みEDMXで定義されていることをEFに通知します。

ただし、接続文字列からメタデータセクションを削除し、を削除して、UnintentionalCodeFirstExceptionでFluentAPIを使用してコードを記述できますOnModelCreating。この手順に従って、Database-Firstを介して初期モデルを作成してから、この初期モデルに基づいて構築し、Code-Firstでさらに開発することができます。

この時点で、データベースファーストではなくコードファーストで作業していることになり、FluentAPIについて読んだすべてのものが有効になります。

于 2012-04-19T21:39:53.663 に答える
2

実際の「データベースファースト」方法論自体を使用せずに、「データベースファースト」の目的のいくつかを達成することについての興味深い投稿があります。

http://agilenet.wordpress.com/2011/04/11/entity-framework-4-1-rc-with-an-existing-database/

作成者は「Code-First」と「FluentAPI」を使用しますが、データベースとテーブルの自動生成とシードを無効にします。

彼は、「エンティティモデルを作成し、手動でデータベースを作成し、それらのエンティティをデータベースにマッピングする方法」を示すサンプルを共有しています。最後に、DatabaseContextを使用してエンティティを保存および取得する方法を示します。」

彼が「エンティティとデータベースの間でマップする各エンティティの構成クラス」を作成する部分は、かなりクールです。この手順は、正式な「データベースファースト」アプローチを採用した場合に生成される「edmx」ファイルを置き換えます。

于 2013-02-20T17:31:57.613 に答える
0

6部構成のデータベースファーストチュートリアルシリーズのこのチュートリアルには、流暢なAPIの例がいくつか含まれています。

http://www.asp.net/web-forms/tutorials/continuing-with-ef/using-the-entity-framework-and-the-objectdatasource-control-part-3-sorting-and-filtering

于 2012-04-19T21:39:30.887 に答える