创建数据库上下文定义

时间:2018-03-27 06:11:09

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

这是根据书" 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; }
     }
}

1 个答案:

答案 0 :(得分:1)

你有一个ApplicationDbContext,它继承自DbContext,就像每个数据库上下文一样。它代表您在代码中执行CRUD操作的数据库对象。因为你继承了你有可能调用基本构造函数 - 在这种情况下 - 初始化。在具体的DbContextOptions<T>中,它可以不使用任何一个DbContextOptionsDbContextOptions<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实例包含配置信息,例如:

     
      
  • 要使用的数据库提供程序,通常通过调用UseSqlServerUseSqlite
  • 等方法来选择   
  • 数据库实例的任何必要连接字符串或标识符,通常作为参数传递给上述提供程序选择方法
  •   
  • 任何提供者级可选行为选择器,通常也在对提供者选择方法的调用中链接
  •   
  • 任何常规EF Core行为选择器,通常在提供程序选择器方法之后或之前链接
  •   

通常,DbContextOptions是一个包含整个数据库上下文配置的容器。你可以定义例如如果它是SQLin-memory数据库以及更改跟踪行为。已提及的问题评论链接以及我的回答中,MS doc article将提供所需的信息和示例。