如何在代码优先中避免重复的数据结构

本文关键字:数据结构 代码 | 更新日期: 2023-09-27 18:28:02

我发现自己有很多表示查找表的类,如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.

如何在代码优先中避免重复的数据结构

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

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

您的Gender将变为:

public class Gender : BaseEntity
{
    ...
}

为了避免您不希望的映射继承,请始终遵循以下规则:

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

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