Я хочу использовать наследование классов для фильтрации строк в базе данных, которая не является абсолютно нормальной и реляционной. Существует таблица 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();
}
}
Но есть проблема приведения классов (потому что код возвращает List, а не List) а также это не похоже на решение в стиле ORM, EntitiesA - это не DBSet, автоматически загружать запрос и т. д.