Как избежать повторяющихся структур данных в Code First? - PullRequest
0 голосов
/ 17 марта 2012

Я обнаружил, что у меня много классов, представляющих таблицы поиска, такие как 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 Ответ

2 голосов
/ 17 марта 2012

В этом случае создайте базовый класс, содержащий Id и Name.

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

и ваш Gender станет:

public class Gender : BaseEntity
{
    ...
}

Чтобы избежать отображаемого наследования, которое вы не хотите, всегда следуйте этим правилам:

  • OnModelCreating не отображается BaseEntity - отображаются только производные классы
  • Ваш контекст не содержит DbSet для BaseEntity, только для производных типов
  • Вы не ступили EntityTypeConfiguration зарегистрированы на BaseEntity

Если вы будете следовать этим правилам, наследование будет только в вашем приложении, а не в вашей базе данных.

...