InvalidOperationException: Unable to resolve service for type 'WebApplication3.Models.backtestContext' while attempting to activate 'WebApplication3.Controllers.SysUsersController'.
Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServ
以上为操作中的错误,下面将会提供解决方案:
2019创建mvc自动生成代码比2017简单多了,
1、 新建项目“eco”,选择“web应用程序(模型视图控制器)”,身份验证为:不进行身份验证。
2、 在【程序包管理控制台】执行命令:
Scaffold-DbContext "server=127.0.0.1;uid=root;pwd=root;database=backtest" Pomelo.EntityFrameworkCore.Mysql -OutputDir Models –Force
ok,就这么简单,但是,运行起来,还是会出现问题,就是本文一开始的蓝色错误提示,查了很多资料,见到有高人的解决方法:
应用方法一:
在 public void ConfigureServices(IServiceCollection services)里面添加:
services.AddTransient<WebApplication1.Models.backtestContext>();
就这么简单。
应用方法二:(推荐)
在 public void ConfigureServices(IServiceCollection services)里面添加:
Services.AddDbContext<backtestContext>(m => m.UseMySql("server=127.0.0.1;uid=root;pwd=root;database=backtest", Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.21-mysql")));
应用方法三:
声明一个新类继承backtestContext
public class DataBase:backtestContext
{
private string _connectionstring = string.Empty;
public DataBase( string connectionString):base ()
{
_connectionstring = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseMySql(_connectionstring, Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.21-mysql"));
}
}
}
然后在 public void ConfigureServices(IServiceCollection services)里面添加:
builder.Services.AddTransient<DataBase>(m =>
{
return new DataBase("server=127.0.0.1;uid=root;pwd=root;database=backtest");
});