asp.net-core-mvc - 在 MVC Core 中使用现有数据库时出现 InvalidOperationException
问题描述
我试图在我的应用程序中使用现有的数据库,但每次我点击它说的视图
处理 InvalidOperationException 时发生未处理的异常:尝试激活“BookStore.Models.UsersRepo”时无法解析类型“BookStore.Models.BookStoreContext”的服务
语境
namespace BookStore.Models
{
public partial class BookStoreContext : DbContext
{
public BookStoreContext()
{
}
public BookStoreContext(DbContextOptions<BookStoreContext> options)
: base(options)
{
}
public virtual DbSet<Users> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=(localdb)\\V11.0;Database=BookStore;Trusted_Connection=True;");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasAnnotation("ProductVersion", "2.2.3-servicing-35854");
modelBuilder.Entity<Users>(entity =>
{
entity.HasKey(e => e.UserId);
entity.Property(e => e.UserId).HasColumnName("User_ID");
entity.Property(e => e.Password)
.IsRequired()
.HasMaxLength(50);
entity.Property(e => e.UserName)
.IsRequired()
.HasColumnName("User_Name")
.HasMaxLength(50);
});
}
}
}
用户存储库
namespace BookStore.Models
{
public class UsersRepo : IUser
{
private readonly BookStoreContext _bookStoreContext;
public UsersRepo(BookStoreContext bookStoreContext)
{
_bookStoreContext = bookStoreContext;
}
public void AddUser(Users users)
{
_bookStoreContext.Users.Add(users);
_bookStoreContext.SaveChanges();
}
}
}
用户模型
public partial class Users
{
public long UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public int Type { get; set; }
}
public interface IUser
{
void AddUser(Users users);
}
用户控制器
public class UsersController : Controller
{
private readonly IUser _userRepo;
public UsersController(IUser userRepo)
{
_userRepo = userRepo;
}
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(Users users)
{
_userRepo.AddUser(users);
return RedirectToAction("UserAddedSuccessfully");
}
public IActionResult UserAddedSuccessfully()
{
return View();
}
}
解决方案
我试过这个,它工作得很好
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<BookStoreContext>();
// In production, the Angular files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}
推荐阅读
- amp-html - 在官方 AMP 网站上,动画显示控制台错误
- python - 如何匹配'**'?
- javascript - 使用 removeClass 从列表项单击锚链接中删除类
- kubernetes - Airflow UI 中的 Dags 不显示开/关并继续加载
- php - Laravel 8 - 在视图中使用路由参数
- javascript - contentEditable by class = false 不起作用
- django - 如何在 Django 中显示来自数据库对象的整数?
- c++ - 将二维向量转换为二维数组
- python - 覆盖 Scrapy 中的 serialize_field() 方法
- powershell - TypeTexting 到 word 文档时内容被截断