2011-08-22 179 views
0

我想提一提,我是EF新手。EF 4.1 Code First POCOs Library

我正在用EF 4.1創建數據訪問庫。

對於每個實體,我有兩個翻譯目標表。

例如:事件==>用於阿拉伯語的Event_ar和用於英語的Event_en。

第一個問題:我有一個錯誤,如果我寫的同一實體類型

,所以我做這項工作圍繞這是絕對不好聽2個DbSets:

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; } 
} 

我想知道如果有解決方案呢?

第二個 實體應該與表名相同,否則我有錯誤。

例:「dbo.Event_ar」應該有一個POCO「Event_ar」

應該是具有表的同名屬性的名稱。

這裏:dbo.Events_ar ==> POCO 「Events_ar」

爲什麼我不能操縱的名字?任何解決方案

回答

1

我不確定您的解決方案是否朝着正確的方向發展。對於每種語言都有一張表是不正確的 - 您可以簡單地在事件表中添加另一列來指定語言是什麼?

您可以使用此列檢索具有所需語言的行。

關於表和POCO實體名稱,您可以通過在類elvel上使用System.ComponentModel.TableAttribute來覆蓋實體映射到的表,但爲了保持POCO-ness我喜歡使用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());   
    } 
}