[英]Error in asp.net mvc core 2 scaffolding generated Controller
我正在研究ASP.Net Core 2 MVC應用程序。
我使用此命令為后台為每個表生成一個控制器:
dotnet aspnet-codegenerator --project . controller -name MYTABLEController -m MYTABLE -dc MYDBContext
(例如,替換MYTABLE和MYDBContext)。
這是csharp控制器的外觀:
namespace MYPROJECT.Controllers
{
public class MYTABLEController : Controller
{
private readonly MYDBContext _context;
public ContactsController(MYDBContext context)
{
_context = context;
}
您是否已看到它創建了一個接受一個參數的構造函數:數據庫對象(entityframework)。
當我調用網頁時,由於未初始化,因此在此上下文中出現錯誤。
在這里,我要做的是使其工作:
namespace MYPROJECT.Controllers
{
public class MYTABLEController : Controller
{
private readonly MYDBContext _context = new MYDBContext();
public ContactsController()
{
}
所以我的問題是:
有沒有解決此問題的最佳方法? 我想知道這是否真的是一個錯誤或我錯過了什么。
每個生成的chtml視圖的外觀都非常難看。 有一些選擇可以使自己更性感嗎?
謝謝
生成的控制器代碼看起來不錯。 您沒有提到確切的錯誤,但是,我假設您正在收到錯誤,因為尚未在服務容器中添加MYDBContext。
在您的startup.cs文件中,您需要將此MYDBContext添加到服務容器中,以便控制器將其正確注入。 例,
services.AddDbContext<MYDBContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
完成此操作后,如果出現以下錯誤:
System.ArgumentException: AddDbContext was called with configuration, but the context type 'MyDBContext' only declares a parameterless constructor.
那么這意味着您的腳手架DbContext
沒有正確配置為使用正確的options參數注入。 將構造函數更新為:
public partial class MYDBContext : DbContext
{
public MYDBContext(DbContextOptions<MYDBContext> options)
: base(options)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.