首页 > 解决方案 > 实体框架上下文基础选项的定义

问题描述

我在实体框架示例中看到了 base(options)。base(options) 是什么意思,因为找不到 Microsoft 文档。

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


}

此处的示例:文档确实定义了 DbContextOptions,但没有定义基本选项。 https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext

标签: c#entity-frameworkasp.net-coreasp.net-core-mvc

解决方案


这与 , 的基本原理之一OOP有关Inheritance。每当您创建派生类的实例时,您会看到将首先调用基类构造函数。

在这种情况下,每当BloggingContext创建 的实例时,DbContext也会首先调用类构造函数,它是parameter-less默认构造函数(如果您不使用:base(soemthing))。如果你看到DbContext类的定义,那么你会看到有两个构造函数,一个是无参数的,另一个是DbContextOptions options作为参数的。

因此,当您创建派生类的实例时,您可以决定应该调用基类的哪个适当的构造函数,在这种情况下,您通过传递构造函数参数值来调用第二个构造函数,如下所示:

public BloggingContext(DbContextOptions<BloggingContext> options)
    : base(options)
{ }

而已!


推荐阅读