这是根据书" Pro ASP.NET Core MVC 2"来声明数据库上下文的方法。 ,亚当弗里曼。 这个参数意味着什么:
DbContextOptions<ApplicationDbContext> options : base(options) { }
尝试理解声明DBContext的选项。
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.DependencyInjection;
namespace SportsStore.Models
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options):
base(options)
{
}
public DbSet<Product> Products { get; set; }
}
}
答案 0 :(得分:1)
你有一个ApplicationDbContext
,它继承自DbContext
,就像每个数据库上下文一样。它代表您在代码中执行CRUD操作的数据库对象。因为你继承了你有可能调用基本构造函数 - 在这种情况下 - 初始化。在具体的DbContextOptions<T>
中,它可以不使用任何一个DbContextOptions
或DbContextOptions<ApplicationDbContext>
类型的参数 - 这就是base(options)
调用。您可以在MS doc article base(C# Reference)中找到更详细,更好的解释
基类&#39;您可以在GitHub - EntityFramework Core repository找到实施方案。 (该链接引用了您在代码中调用的基础构造函数。)
DbContextOptions<ApplicationDbContext>
个对象包含您在将其注入ApplicationDbContext
之前可能已设置的配置。
MS docs article - Configuring DbContextOptions更详细:
DbContext
必须有DbContextOptions
的实例才能执行任何工作。DbContextOptions
实例包含配置信息,例如:
- 要使用的数据库提供程序,通常通过调用
等方法来选择UseSqlServer
或UseSqlite
- 数据库实例的任何必要连接字符串或标识符,通常作为参数传递给上述提供程序选择方法
- 任何提供者级可选行为选择器,通常也在对提供者选择方法的调用中链接
- 任何常规EF Core行为选择器,通常在提供程序选择器方法之后或之前链接
通常,DbContextOptions
是一个包含整个数据库上下文配置的容器。你可以定义例如如果它是SQL
或in-memory
数据库以及更改跟踪行为。已提及的问题评论链接以及我的回答中,MS doc article将提供所需的信息和示例。