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

时间:2017-05-10 11:28:28

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

我使用此命令

创建了一个新的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类的对象?

1 个答案:

答案 0 :(得分:0)

问题是如何创建object的{​​{1}}。可以在ApplicationDbContext项目的ApplicationDbContext文件中找到IdentityModels.cs类。

MVC文件夹中的类的自动命名空间为Models

关于YourProjectName.Models的内容,您可以在此处阅读:

What goes into DbContextOptions when invoking a new DbContext?

鉴于您的连接字符串名称为options,它可能是这样的:

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...

相关问题