Я использую 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()
в моем контексте, но я даже не видел, чтобы он вызывался.