繁体   English   中英

如何在asp.net mvc身份项目中创建数据库上下文对象?

[英]How to create Database context object in asp.net mvc identity project?

我使用此命令创建了一个新的ASP.NET项目

dotnet new mvc --auth Individual

它仅生成注册和登录操作。 我还需要为产品模型创建,读取,更新和删除操作。 但我无法创建DatabaseContext实例。 我试图创建一个像这样的对象:

private ApplicationDbContext ctx = new ApplicationDbContext();

它说错误:

没有任何参数对应于'ApplicationDbContext.ApplicationDbContext(DbContextOptions)'[project-name]所需的形式参数'options'

这是ApplicationDbContext.cs文件:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            // Customize the ASP.NET Identity model and override the defaults if needed.
            // For example, you can rename the ASP.NET Identity table names and more.
            // Add your customizations after calling base.OnModelCreating(builder);
        }
    }

那么如何创建ApplicationDbContext类的对象呢?

问题是关于创建ApplicationDbContextobject ApplicationDbContext类可以在MVC项目的IdentityModels.cs文件中找到。

Models文件夹中的类的自动命名空间是YourProjectName.Models

至于options你可以在这里阅读:

调用新的DbContext时DbContextOptions会发生什么?

给定连接字符串名称为DefaultConnection ,它可能如下所示:

var options = new DbContextOptionsBuilder<ApplicationDbContext>();
options.UseSqlServer(Configuration.GetConnectionStringSecureValue("DefaultConnection"));

因此,要在代码中生成ApplicationDbContext对象,您可以简单地使用自动生成的命名空间并生成选项来初始化对象,如下所示:

using YourProjectName.Models; //initialize your .cs file with this
...
var options = new DbContextOptionsBuilder<ApplicationDbContext>();
options.UseSqlServer(Configuration.GetConnectionStringSecureValue("DefaultConnection"));
ApplicationDbContext context = new ApplicationDbContext(options); //somewhere else in the file

然后使用它: context.Users...context.YourOtherTableNames.EFMethod...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM