【问题标题】:How to create Database context object in asp.net mvc identity project?如何在 asp.net mvc 标识项目中创建数据库上下文对象?
【发布时间】:2017-05-10 11:28:28
【问题描述】:

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

dotnet new mvc --auth Individual

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

private ApplicationDbContext ctx = new ApplicationDbContext();

它说一个错误:

没有给出与所需形式相对应的参数 参数“选项”的 'ApplicationDbContext.ApplicationDbContext(DbContextOptions)' [项目名称]

这是 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类的对象呢?

【问题讨论】:

  • ApplicationDbContext 应该在IdentityModels 中为MVC 项目自动创建
  • 是的。有ApplicationDbContext。但是如何创建这个类的对象呢?

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

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

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

至于options 的含义,您可以在此处阅读:

What goes into DbContextOptions when invoking a new DbContext?

鉴于您的连接字符串名称为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...

【讨论】:

    猜你喜欢
    • 2017-02-19
    • 2014-06-28
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多