Я хочу использовать наследование классов для фильтрации строк в базе данных, что не является абсолютно нормальным и реляционным. Существует таблица entities
, сопоставленная с моделью Entity
через EF Core:
[Table("entities")]
public class Entity
{
public int Id { get; set; }
public string Type { get; set; }
}
Type
- это некоторая строка, которая может быть "A" или "B", например.
Я хочу указать класс EntityA : Entity
для сущностей с типом A и соответственно для B:
public class EntityA : Entity
{
// some unique A properties
}
public class EntityB : Entity
{
// some unique B properties
}
В основном мой DBContext выглядит так
public class ApplicationContext : DbContext
{
public DbSet<Entity> Entities { get; set; }
// ...
}
Могу ли я определить EntitiesA
и EntitiesB
в своем DBContext
, используя фильтрацию по типу?
Я хотел написать это хотя бы по-дурацки:
public List<EntityA> EntitiesA
{
get
{
return Entity.Where(x => x.Type == "A").ToList();
}
}
Но есть проблема приведения классов (поскольку код возвращает список, а не список), а также это не похоже на решение в стиле ORM, EntitiesA не является DBSet, загружает запрос автоматически и так далее.