实现DbContextOptions

时间:2018-04-09 15:29:31

标签: c# asp.net-mvc entity-framework-core

在以下代码中,我不明白为什么我们在ApplicationDbContext之后解决了DbContextOptions

namespace SportsStore.Models
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext>options)
            : base(options)
        {
        }   

        public DbSet<Product> Products { get; set; }
    }
}

基类构造的定义是:

 public DbContext([NotNullAttribute] DbContextOptions options);

上面代码中的 ApplicationDbContext 是一个属性吗?或者它是泛型类型,为什么我们应该在这里使用泛型类型?因为在官方文件中实施建筑时,提到:

  

DbContext使用的选项。你通常会覆盖   DbContext.OnConfiguring(DbContextOptionBuilder)或使用   DbContextOptionBuilder创建此类的实例...

如果我们想根据Microsoft官方文档配置派生类构造我们应该如何进行?

1 个答案:

答案 0 :(得分:0)

这样您就可以使用依赖注入来实例化您的上下文,即通过AddDbContext扩展方法。在OnConfiguring中,您可以检查IsConfigured属性是否通过构造函数(options参数)查看上下文。 DbContextOptions<T>只是扩展DbContextOptions并且没有带来任何新内容,但是通过这种方式,您可以看到它与特定的DbContext相关联。 请参阅https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbcontext.onconfiguring?view=efcore-2.0