2011-08-22 17 views
0

私はEFの初心者です。EF 4.1コードの最初のPOCOライブラリ

私はEF 4.1でデータアクセスライブラリを作成しています。

各エンティティごとに、変換対象のテーブルが2つあります。

ex:Events ==>アラビア語のEvent_arと英語のEvent_en。

最初の問題

public class Event_en : Event { } 
public class Event_ar : Event { } 

public class DB : DbContext 
{ 
    public DbSet<Event_ar> Events_ar { get; set; } 
    public DbSet<Event_en> Events_en { get; set; } 
} 

は、私が知りたいのです:私は、私は絶対に素敵ではありません、その周りにこの仕事をしたので、

同じエンティティタイプの2 DbSetsを書く場合、私は、エラーを持っていますもしそれが解決策があれば?

第2番目 エンティティはテーブルと同じ名前である必要があります。そうでないとエラーが発生します。

例:「dbo.Event_arは」

それはテーブルの同じ名前を持つプロパティの名前でなければなりませんPOCO「Event_ar」を持っている必要があります。ここで

:dbo.Events_ar ==> POCO "Events_ar"

私は名前を操作できないのはなぜ?どんな解決策ですか?

答えて

1

解決策が正しい方向に向いているかどうかはわかりません。すべての言語に対応するテーブルがあるとは思わないので、言語が何であるかを指定する別の列をイベントテーブルに追加するだけです。

この列を使用して、希望する言語の行を取得できます。

テーブルとPOCOエンティティ名については、エンティティがマップされるテーブルを、elvelクラスでSystem.ComponentModel.TableAttributeを使用するか、またはPOCOを維持するためにマップするかを変更することができます。EntityTypeConfigurationクラスとテーブル名を指定します。例えば

public class CurrencyConfiguration : EntityTypeConfiguration<Currency> 
    { 
     public CurrencyConfiguration() 
     { 
      this.ToTable("Conv", "Ref");   
     } 
    } 

その後、あなたはDbContextのOnModelCreatingオーバーライドメソッドでモデルビルダーに追加します。

public class MyContext : DbContext 
{ 
    public DbSet<Currency> Currencies { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Configurations.Add(new CurrencyConfiguration());   
    } 
} 
関連する問題