【发布时间】:2018-04-19 20:56:16
【问题描述】:
我不知道自己做错了什么,非常努力地设置数据库项目,并不断收到与连接字符串 dbcontext 相关的错误。
我有一个刚刚连接到 localdb 的 applicationdbcontext
问题是我的另一个 dbcontext,我的数据似乎在错误的位置,我不知道如何修复它。此代码在我的模型文件夹中
public DbSet<Customer> Customers { get; set; }
public DbSet<Job> Jobs { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<Staff> Staff { get; set; }
public DbSet<RequestType> RequestType { get; set; }
public DbSet<CustomerJob> CustomerJobs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Customers;Trusted_Connection=True;");
}
在 startup.cs 我有这个代码.. services.AddDbContext(选项 => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddDbContext(选项 => options.UseSqlServer(Configuration.GetConnectionString("ProdConnection")));
在我的 appsettings 配置中,我有这个代码..
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=BRSCRM;Trusted_Connection=True;MultipleActiveResultSets=true",
"ProdConnection": "Server=(localdb\\mssqllocaldb;Database=Customers;Trusted_Connection=True;MultipleActiveResults=true"
},
然而,当我运行我的项目时,我得到一个错误,提供的配置没有被使用,DI 控制反转确实,它是一袋猫,它着火了!
【问题讨论】:
-
错误是这样的-- AddDbContext 是用配置调用的,但是上下文类型'CustomerContext'只声明了一个无参数的构造函数。这意味着永远不会使用传递给 AddDbContext 的配置。如果将配置传递给 AddDbContext,则“CustomerContext”应声明一个接受 DbContextOptions
的构造函数,并且必须将其传递给 DbContext 的基本构造函数,因此我收集到覆盖 onConfiguring 不再有效,我该如何修复它,请有人帮忙. -
呃显然它根本不需要 startup.cs 文件中的字符串,它从 onconfiguring 中进行了覆盖就好了,但是它很愚蠢,想使用相同的连接字符串两次。 .
标签: asp.net entity-framework asp.net-core-mvc