web-dev-qa-db-ja.com

Visual Studioで新しいデータ項目を追加するときのEF 6.x DbContext Generatorオプションの目的

LINQ to SQLを使用して構築したWebアプリがあり、LINQ to Entity Frameworkにアップグレードしたいと考えています。私はいくつかのチュートリアルを見てきましたが、私が学んだことは、基本的にデータベースファーストのシナリオで、ADO.NET Entity Data Modelを作成するということです。そしてそこから、モデルに含めるテーブルを選択します(LINQ to SQLに非常に似ています)。

Add New Itemダイアログ内に、EF 6.x DbContext Generatorを作成する別のオプションがあることがわかります。

Visual Studio Add New Item dialog

EF 6.x DbContext Generatorと比較して、ADO.NET Entity Data Model(ダイアログの最初のオプション)とは何ですか?そして、EF 6.x DbContext Generatorとは何ですか?テキストファイルを作成しているようです。どうすればいいですか?

59
frenchie

既にデータベースを持っている場合は、LinqToSQLで既に作業しているアプローチと非常によく似ているため、最初のオプションの方が適しています。 .EDMXファイルを使用すると、データベースをグラフィカルに視覚化することもできます。他のことを心配する必要はありません。

12
brduca

DbContext Generatorは、ObjectContextをよりシンプルで短いコードに置き換えて、Entityオブジェクトをデータベースオブジェクトに接続します。 30個のフィールドを持つ単一のデータベーステーブルは、ObjectContextとして約800行のコードで表されますが、DbContextGeneratorによって生成されたDbContextおよびクラスとして理解しやすいコードは約40行です。

DbContext Generatorは2つのファイルを作成します-

  1. 接続文字列の詳細と各テーブルのDbSetを使用してDbContextを作成します。

  2. 各テーブルを表すクラスを作成します。これらの.ttフォルダーを開くと、DbContextとクラスが生成されます。これらのクラスで何もする必要はありません-Controllerアクションでそれらを参照します。

チュートリアルは http://msdn.Microsoft.com/en-US/data/jj206878 で入手できます

16
William Smith

これは、EntityFrameworkとジェネレーターに関する重要な記事だと思います。

MSDN記事

この記事の概要は次のとおりです。

Entity Framework Designerを使用してモデルを作成すると、クラスと派生コンテキストが自動的に生成されます。デフォルトのコード生成に加えて、生成されるコードをカスタマイズするために使用できる多くのテンプレートも提供します。これらのテンプレートはT4テキストテンプレートとして提供され、必要に応じてテンプレートをカスタマイズできます。

通常これらのジェネレーターは、dbモジュールをLinqToSQLからEntityFrameworkに変換しません
完全なデータベースがある場合(Linq2SQLに基づいたモジュールとして持っている場合)、ADO.NET Entity Data Modelを使用して(新しいアイテムを追加:EDMX)、「データベースから生成」を選択することをお勧めします( VS Wizard追加後)。

12
Bronek

DB Firstを行うには2つの方法があります。1つはEDMXファイルを使用し、もう1つはリバースエンジニアリングを使用して最初のPOCOをコーディングします。

EDMXファイルがある場合、エンティティの生成に使用されるジェネレーターをインストールします。いくつかのオプションがあります。 1つはDbContext、もう1つはEntityObjectジェネレーターで、ObjectContextに基づいてオブジェクトを生成します。

6

最初のオプションは、EF(すべてのバージョン)で動作するModel-Firstファイルを作成します。既存のデータベースからEF-Modelを更新(または構築)することを選択した場合、2番目のオプションを選択すると、生成する機能が与えられますCode-First EFで作業するためのソリューションを構築するための対応ファイル。

私の経験によると、2番目の選択肢は価値のあるオプションではありません。Code-FirstEFを使用する場合は、クリーンなファイルを開いて自由にコードを記述し、Code-Firstが提供する最大限の柔軟性を享受することを強くお勧めしますとその慣習。

3
Ali Dehghan