2013-04-11 14 views
6

私はこのEFに従わない既存プロジェクトにエンティティフレームワークバージョン4.3.1を実装しようとしています。このデータベースはすでに開発されており、現在ado.netを適用しています。私はEFで作業することから始めます、それはデータベースファースト、コードが最初です。既存のデータベースを持つEntity Framework

答えて

13

データベースが既に存在しています。私はEDMXファイルよりもドメインがより組織化されているため、注釈を使用してテーブルをマッピングするコードファーストのアプローチを使用しています。視覚的なEDMXが多くのテーブルに存在する場合、デザインはデータと接続が混雑するため、実際には役に立たなくなる可能性があります。作成)

[Table("tbl_cust")] 
public class Customer 
{ 
    [Key] 
    [Column("cust_id")] 
    public int CustomerId { get; set; } 
    [Column("cust_name")] 
    public string Name { get; set; } 
    // Add other properties below 
} 

2:

2つのステップでは、このアプローチで始めることができます。

1)、例えばCustomerをドメインモデルクラスを作成し、データのアノテーションを使用して、テーブルにマッピングコンテキストクラスは、各モデルのDbSet<T>プロパティをDbContext由来と設定し、我々はそう我々の場合には1つしかない:

public class MyApplicationContext: DbContext 
{ 
    public MyApplicationContext() : base("name=ConnectionStringName") { } 

    public DbSet<Customer> Customers { get; set; } 
} 

は今どこでも、あなたのコード内で派生DbContextクラスをインスタンス化し、LINQのクエリを使用してを行うことができます。

var _db = new MyApplicationContext(); 
var customer = _db.Customers.Where(c => c.CustomerId == 37).FirstOrDefault(); 

はNuGetを使用してEntityFrameworkアセンブリへの参照を追加することを忘れないでください。

Good Luck。

+0

おかげさまで、私はDatabaseを最初に使用したいと思っていますが、最初にリバースエンジニアコードを使用することに興味があったとしても、まず最初にコードを試みましたが、EFを作成していませんクラスが失敗した可能性があります。私のデータベースはうまく設計されていませんでした。 –

+0

「EFクラスを作成していない」とはどういう意味ですか? –

+0

by EF Classes私は、テーブル、モデルフォルダのDomainクラスと言っています。リバースエンジニアコードを最初に実行した後は、表示されません。このリンクはhttp://msdn.microsoft.com/ja -us/data/jj200620.aspx –

1

あなたのデータベースは既に存在しているので、明白な選択肢はDatabase firstです。データベースが常識的に設計されていれば、(ほとんどの場合)素晴らしい結果が得られます。

0

私はあなたのデータベースを視覚化するためにEFデザイナーを使いたいかどうかと思います。あなたはEF 4.3.1を見ているので(実際には4.3.1ではなくEF5を見ていなければなりません - EF5は最新バージョンです)、あなたはデザイナーを気にしないと思います。この場合、EF Power Toolsを使用してデータベースをリバースエンジニアリングすることができます。これにより、データベースと一致する一連のクラスが作成されます。データベースが既に作成されているため、EFはクラス内の変更を検出できないことに注意してください(追加の情報がデータベースに格納され、モデルが変更されたかどうかをEFが判別できる場合)。これにはblog postを必ずお読みください。決定に役立つ多くの詳細が含まれています。 デザイナーでモデルを見ることができたら、VSを使用してDBをリバースエンジニアリングすることができます。 VS2012を使用する場合は、デフォルトでEF5とDBContextを取得します。コードファーストを使用するのと異なるのは、モデルを構築する代わりに、モデルはプロジェクトの一部であるedmxファイルに保存されます(コードを生成するために使用されます)

関連する問題