如何避免Code First中重复的数据结构?

时间:2012-03-17 11:34:27

标签: c# .net entity-framework entity-framework-4.1 ef-code-first

我发现自己有很多代表查询表的类,例如JobTitle和Language,它们都具有相同的结构,即

public Guid Id { get; set; }
public string Name { get; set; }

如何在不引入额外属性的情况下避免重复此结构,例如复杂类型的IdName,具有与上述相同的结构,例如

public class Gender
{
    public IdName Inner { get; set  }
}

我想避免引用Gender.Inner.Name而只是引用Gender.Name。

1 个答案:

答案 0 :(得分:2)

在这种情况下,创建一个包含IdName的基类。

public class BaseEntity 
{
    public Guid Id { get; set; }
    public string Name { get; set; }    
}

,您的Gender将成为:

public class Gender : BaseEntity
{
    ...
}

要避免您不想要的映射继承,请始终遵循以下规则:

  • OnModelCreating未映射BaseEntity - 仅映射派生类
  • 您的上下文不包含DbSet BaseEntity,仅适用于派生类型
  • 您没有注册EntityTypeConfiguration
  • BaseEntity

如果遵循这些规则,继承将仅在您的应用程序中,而不在您的数据库中。