Получить общие записи с ChangeTacker - PullRequest
0 голосов
/ 06 октября 2018

У меня есть базовые классы сущностей:

public class Entity<TKey>
{
    public TKey Id { get; private set; }

    private List<INotification> _domainEvents;

    public IReadOnlyCollection<INotification> DomainEvents => _domainEvents;

    …
}

У моих сущностей могут быть разные типы идентификаторов: Entity , Entity и т. Д.

Проблема в том, что Iнужно для доменных сущностей с ChangeTracker:

var domainEntities = context.ChangeTracker
    .Entries<Entity<TSomeType>>()
    .Where(x => x.Entity.DomainEvents != null && x.Entity.DomainEvents.Any());

Без базового базового класса, я просто поставил «Entity» и работает, но у меня есть универсальный, и я не знаю возможные типы TSomeType.Как я могу получить записи?

1 Ответ

0 голосов
/ 06 октября 2018

Добавить общий интерфейс:

public interface IEntity
{
    IReadOnlyCollection<INotification> DomainEvents { get; }
}

public class Entity<TKey> : IEntity
{
    public TKey Id { get; private set; }

    private List<INotification> _domainEvents;

    public IReadOnlyCollection<INotification> DomainEvents => _domainEvents;

    …
}

Как только вы это сделаете, вы сможете получить доступ к DomainEvents через интерфейс, например,

var domainEntities = context.ChangeTracker
    .Entries<Entity<TSomeType>>()
    .Cast<IEntity>()
    .Where(x => x.DomainEvents != null && x.DomainEvents.Any());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...