2016-03-24 30 views
1

私は複数のスキーマを持つ既存のデータベースを使用しています。さらに、異なるスキーマはテーブル名を複製します。コード最初の展開はオプションではありません。Entity Frameworkデータベース最初の複数のスキーマ重複するテーブル名

私のedmxを生成するとき、私は複数の問題にぶつかっていますが、心配している主なものは命名規則です。スキーマ名がdboでない限り、すべてのエンティティにスキーマ名を接頭します。

たとえば、私はempスキーマとdboスキーマの両方にPersonテーブルを持っています。私はemp_PersonとPersonの2つのエンティティを持っていたいと思います。

私は接頭辞を追加することができます(私はcodeplexに例を見つけました)が、いつも同じ接頭辞をどこにでも適用するように見えます。

提案やリンクはありますか?

+0

を参照してください。 「表」、「スキーマ」)。 edmxに相当するものがわからない –

+0

私はEntityFramework-Reverse-POCO-Code-First-Generatorを探していますが、スキーマ名の接頭辞を付けることができます。もう1つの方法は、別々のコンテキストを作成することですが、異なるスキーマのテーブル間のRIチェックが問題を引き起こしているようです。 –

答えて

1

コードまず、お客様のニーズを満たすことができます。あなたが言及したようにクラスに接頭辞を付けて、EFに裏でマッピングを処理させる。あなたは、単一のコンテキストでこれを行うことができます。

public class Person 
{ 
    public int PersonId { get; set; } 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
    ... 
} 

public class empPerson 
{ 
    public int PersonId { get; set; } 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
    ... 
} 

は今だけマッピングするために、あなたのコンテキストで流暢な設定を使用します。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<Person>() 
     .ToTable("Person", "schema1") 
     .HasKey(p => p.PersonId); 

    modelBuilder.Entity<empPerson>() 
     .ToTable("Person", "emp") 
     .HasKey(p => p.PersonId); 

    // other fluent code for relationships, etc. 
} 

は「(私はあなたがToTableを使用することができ、最初のコードに知っhttps://msdn.microsoft.com/en-us/data/jj591617.aspx#2.3

+0

エンティティフレームワークデータベース最初のコードは最初ではなく、この回答はこの質問に関連していません –

+1

「私はEntityFramework-Reverse-POCO-Code-First-Generatorを探しています」というコメントを読みました。質問。 –

+0

@SteveGreeneデータベースを最初にアプローチするのはどうですか? –

関連する問題