嗨,我正在尝试从Asp.Net MVC 5迁移到.Net Core 2.0 Web应用程序。
我被错误提示卡住了:
无法从“字符串”转换为 'Microsoft.EntityFrameworkCore.DbContextOptions'
当我将鼠标悬停在类上时,会出现上述错误:
public class ExampleModelWrapper : DbContext
{
public ExampleModelWrapper()
: base("name=EXAMPLE_MODEL")
{
}
}
ExampleModelWrapper是一个模型。
我在堆栈溢出中提到了以下问题: How can I implement DbContext Connection String in .NET Core?
我在appsettings.json中有连接字符串:
{
"ConnectionStrings": {
"EXAMPLE_MODEL": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Monitoring-CCA7D047-80AC-4E36-BAEA-3653D07D245A;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
我已经在startup.cs中提供了服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("EXAMPLE_MODEL")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
// Add application services.
services.AddTransient<IEmailSender, EmailSender>();
services.AddMvc();
}
可能是上述错误的原因。我认为已成功建立到数据库的连接,因为它正在为Identity Db的登录和注册流程工作。我也对如何或在何处更改身份Db的连接感到困惑。感谢帮助,谢谢!!
答案 0 :(得分:3)
您需要在DbContext
public ExampleModelWrapper (DbContextOptions<ExampleModelWrapper> options)
: base(options)
{
}
在启动期间,您需要修改以下内容:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("EXAMPLE_MODEL")));
到以下:
services.AddDbContext<ExampleModelWrapper>(options =>
options.UseSqlServer(Configuration.GetConnectionString("EXAMPLE_MODEL")));
基本上,您需要指定要使用的DbContext
。