Расширенный DbSet не инициализируется правильно - PullRequest
0 голосов
/ 27 июня 2018

Я использую Entity Framework Core 2.1. То, что я хочу сделать, это расширить DbSet и переопределить Find, чтобы поместить немного собственной логики перед фактическим вызовом DbSet.Find().

Примерно так:

public class ExtendedDbSet<T> : DbSet<T> where T: class
{
    public override T Find(params object[] keyValues)
    {
        // do something here
        return base.Find(keyValues);
    }
}

Но когда я делаю это и использую ExtendedDbSet, вот так:

public class SomeContext: DbContext
{
    public SomeContext(DbContextOptions<SomeContext> options)
        : base(options)
    {
    }

    public ExtendedDbSet<SomeEntity> Entities{ get; set; }


    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<SomeEntity>()
            .ToTable("SomeEntity")
            .HasKey("ID");
    }
}

Когда я иду к доступу SomeContext.Entities, это ноль. Есть какая-то настройка, которая не вызывается, но я не уверен, что это. Если я просто изменю ExtendedDbSet<T> на DbSet<T> SomeContext.Entities, инициализируется, как я ожидаю. Я просмотрел документы на предмет некоторых хуков жизненного цикла EF, которые я могу использовать, но не увидел многих, которые выглядели так, как мне нужно. Я пытался переопределить DbContext.Set() в моем контексте, но я даже не видел, чтобы он вызывался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...