我想提一下,我是EF的新手。
我正在使用EF 4.1创建数据访问库。
对于每个实体,我有两个用于翻译目标的表。
ex:Events ==>阿拉伯语的Event_ar和英语的Event_en。
第一个问题:如果我写了两个相同实体类型的DbSets,我会出错#/ p>
所以我做了这项工作,这绝对不是很好:
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; }
}
我想知道是否有解决方案吗?
第二个 实体应该与表名相同,否则我会有错误。
Ex:“dbo.Event_ar”应该有一个POCO“Event_ar”
它应该是与该表名称相同的属性名称。
此处:dbo.Events_ar ==&gt; POCO“Events_ar”
为什么我不能操纵这些名字?任何解决方案?
答案 0 :(得分: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());
}
}