Как применять паттерн спецификация, если в реализации репозитория свои сущности

У меня есть доменная сущность User:

public class User
{
    public long Id { get; set; }
    public State State { get; set; }
    public bool IsAdmin { get; set; }
    public bool IsBanned { get; set; }
}

На уровне доступа к данным я использую ORM Entity Framework Core, соответственно там же есть сущность User для работы с ORM:

public class User
{
    public long Id { get; set; }
    public State State { get; set; }
    public bool IsAdmin { get; set; }
    public bool IsBanned { get; set; }
    public int? CurrentVkId { get; set; }
    public Vk? CurrentVk { get; set; }
    public List<Vk> Vks { get; set; } = new();
    public List<Payment> Payments { get; set; } = new();
    public List<Subscribe> Subscribes { get; set; } = new();
}

И к примеру следующая спецификация (использую Ardalis.Specification):

public sealed class BannedUsersSpecification : Specification<User>
{
    public BannedUsersSpecification()
    {
        Query.Where(u => u.IsBanned);
    }
}

Спецификация написана именно для доменной сущности, как я могу применить ее для сущности, определенной в слое доступа к данным?

Я привел простой пример, а если бы у сущности домена были свойства, которые хранятся как-то по-другому в сущности EF, скажем, в JSON к примеру, как тогда применять спецификацию?

Или если бы мы вместо ORM использовали бы чистый SQL, что тогда?


Ответы (0 шт):