2011-08-22 126 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());   
    } 
}