Класс, от которого наследуются все мои сущности, выглядит следующим образом:
public class EntityBase
{
public DateTimeOffset? CreatedDate { get; set; }
public DateTimeOffset? LastModifiedDate { get; set; }
public string Status { get; set; }
}
Я пытаюсь добиться, чтобы EF автоматически отфильтровывал любой статус, который был "удален", каждый раз, когда я возвращалсярезультаты из базы данных.С помощью поиска, который я сделал, я нашел общий способ сделать это путем переопределения OnModelCreating В классе контекста Db, например, так:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EntityBase>().Map(m => m.Requires("Status").HasValue("Active"));
base.OnModelCreating(modelBuilder);
}
Это проблематично по нескольким причинам.В первую очередь это не работает.Как только я касаюсь базы данных, я получаю сообщение об ошибке:
EntityType 'EntityBase' не определен ключ.Определите ключ для этого EntityType.EntityBases: EntityType: EntitySet «EntityBases» основан на типе «EntityBase», для которого не определены ключи.
Что верно, моя базовая сущность не имеет ключа.Тем не менее, это также не фактическая таблица в моей БД, поэтому не предполагается.
Моя другая проблема заключается в том, что на самом деле это не тот фильтр, который мне нужен.Это использует .HasValue("Active")
, когда я ищу больше .DoesntHaveValue("Deleted")
.