提问人:mani agah smailzad 提问时间:10/20/2023 最后编辑:Peter Bmani agah smailzad 更新时间:10/20/2023 访问量:50
当我使用EntityFramework创建带有视图的MVC控制器时,我无法路由到它
when i create mvc controller with views,using entityframework i cant route to it
问:
我的控件构建得很好,但我无法到达该路径,并且出现此错误:
处理请求时发生未处理的异常。 InvalidOperationException:尝试激活“First_Identity_Project.Controllers.UsersController”时,无法解析类型为“First_Identity_Project.Models.Utility”的服务。 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)
InvalidOperationException:尝试激活“First_Identity_Project.Controllers.UsersController”时,无法解析类型为“First_Identity_Project.Models.Utility”的服务。
我的上下文中的代码:
using Microsoft.EntityFrameworkCore;
namespace First_Identity_Project.Models
{
public class Utility:DbContext
{
public DbSet<User> UserTbl { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("server=.;database=firstIdentityDb;user Id = sa;password= Aa123456;Trusted_Connection = true;trustServerCertificate=true;");
}
}
}
程序 .cs 文件中的代码:
using First_Identity_Project.Controllers;
using Microsoft.Extensions.DependencyInjection.Extensions;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
我没有对控制器内的代码进行任何更改
答:
0赞
Qiang Fu
10/20/2023
#1
将 connectionString 放在上下文中,但仍需要将 dbcontext 添加到 program.cs 中的服务。或者无法解析此 dbcontext。
builder.Services.AddDbContext<Utility>();
另一种模式是将 connectionString 放在 program.cs 中。它会像
public class Utility : DbContext
{
public DbSet<User> UserTbl { get; set; }
public Utility(DbContextOptions<Utility> options)
: base(options)
{
}
}
然后在程序.cs
builder.Services.AddDbContext<Utility>(options =>
options.UseSqlServer("server=.;database=firstIdentityDb;user Id = sa;password= Aa123456;Trusted_Connection = true;trustServerCertificate=true;")
);
评论
UsersController
Utility
Program.cs
builder.Services.AddDbContext<Utility>(options => options.UseSqlServer("connectionString"));