扩展的DbSet无法正确初始化

时间:2018-06-27 11:39:31

标签: c# entity-framework-core

我正在使用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(),但我什至没有看到它被调用。

0 个答案:

没有答案