簡體   English   中英

ASP.NET MVC Core 2支架生成的控制器中的錯誤

[英]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()
        {

        }

所以我的問題是:

  1. 有沒有解決此問題的最佳方法? 我想知道這是否真的是一個錯誤或我錯過了什么。

  2. 每個生成的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM