2017-11-29 19 views
0

私はASP.Net Core 2 MVCアプリケーションを開発中です。asp.net mvc core 2スキャフォールディングでエラーが発生しました

私は、このコマンドを使用して、私のバックオフィス用のテーブルにつき1つのコントローラを生成しています:

dotnet aspnet-codegenerator --project . controller -name MYTABLEController -m MYTABLE -dc MYDBContext 

(MYTABLEとMYDBContextは一例で置き換えます)。データベースオブジェクト(entityframework):

namespace MYPROJECT.Controllers 
{ 
    public class MYTABLEController : Controller 
    { 
     private readonly MYDBContext _context; 

     public ContactsController(MYDBContext context) 
     { 
      _context = context; 
     } 

は、あなたはそれが一つのパラメータを受け取るコンストラクタを作成し、見ることができます持っている:ここで

はCSHARPコントローラがどのように見えるかです。

ウェブページを呼び出すと、初期化されていないため、このコンテキストでエラーが発生します。

私はそれを動作させるために何をすべきかここで

namespace MYPROJECT.Controllers 
{ 
    public class MYTABLEController : Controller 
    { 
     private readonly MYDBContext _context = new MYDBContext(); 

     public ContactsController() 
     { 

     } 

だから私の質問は以下のとおりです。

  1. は、この問題を解決する最善の方法はありますか?私はそれが本当にバグか、何かが恋しいかどうか疑問に思います。

  2. 生成された各chtmlビューのルック&フィールは非常に醜いです。もっとセクシーな何かを得るためのオプションはありますか?

おかげ

答えて

1

生成されたコントローラのコード罰金です。正確なエラーについては言及していませんが、サービスコンテナに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が正しいオプションパラメータを注入するように正しく設定されていないことを意味します。 AddDbContextは、コンフィギュレーションで呼び出されましたが、コンテキストタイプは「MyDBContext」はパラメータなしのコンストラクタを宣言:私は今、このエラーが出る

public partial class MYDBContext : DbContext 
{ 
    public MYDBContext(DbContextOptions<MYDBContext> options) 
     : base(options) 
    { 

    } 
+0

:System.ArgumentExceptionのにコンストラクタを更新します。 – Bob5421

+0

が答えを更新しました。おそらくDbContextクラスを更新する必要があります。 –

+0

この場合、「InvalidOperationException: 'XXXXX.ControllerersXXXController'をアクティブにしようとしているときに、 'XXXX.XXXXContext'タイプのサービスを解決できません。 – Bob5421

関連する問題