2017-02-26 8 views
0

私は、MySQLデータベースに接続するASP.NET Core MVCプロジェクトを開発中です。私は正常にデータベースにアイテムを作成することができましたが、データの取得に問題があります。ASP.NETコアのMySQLサーバからデータを取得

私startup.csは、次のようになります。データを取得するための

public void ConfigureServices(IServiceCollection services) 
{ 
     // Add framework services. 
     services.AddMvc(); 
     services.AddScoped<ISqlService, SqlService>(); 
     services.AddDbContext<WebAPIDataContext>(options => options.UseMySQL(Configuration.GetConnectionString("MySqlServer"))); 
} 

私のコントローラは、次のようになります。

public IActionResult Index() 
{ 
    var model = new ItemsViewModel(); 
    model.items = _sqlService.GetAllItems(); 

    return View(model); 
} 

マイ・サービス(EF)は次のようになります。

public IEnumerable<Item> GetAllItems() 
{ 
    return _webAPIDataContext.items; 
} 

私のHTMLはこのようになります:

<table class="table table-hover"> 
    <thead> 
     <tr> 
      <th>Id</th> 
      <th>Headline</th> 
      <th>Category</th> 
      <th>Description</th> 
      <th>Picture URL</th> 
      <th></th> 
     </tr> 
    </thead> 

    @foreach (var item in Model.items) { 
     <tr> 
      <td>@item.items_id</td> 
      <td>@item.items_headline</td> 
      <td>@item.items_category</td> 
      <td>@item.items_description</td> 
      <td>@item.items_picture</td> 
      <td> 
       <div class="pull-right"> 
        <a href="/items/edit/@item.items_id" class="btn btn-default">Edit</a> 
        <a href="/items/remove/@item.items_id" class="btn btn-danger">Delete</a> 
       </div> 
      </td> 
     </tr> 
    } 
</table> 

私はC#/ ASP.NET Coreでかなり新しいので、これが動作しない小さな理由かもしれません。

htmlファイルでforeach文を省略すると、エラーは発生せず、ページがレンダリングされます。

Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware

未処理の例外が発生した[0]:見つからない方法:「ボイドMicrosoft.EntityFrameworkCore

これは、コンソールでスローされるエラーです。 (Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IChangeDetector) 'を呼び出します。 (System.MissingMethodException):メソッドが見つかりません: ' Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite、のServiceProviderプロバイダ)でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throwで

()

答えて

0

は、それを解決することができました。

"MySql.Data.EntityFrameworkCore": "7.0.6-IR31"の使用中にこのエラーが発生しました。しかし、私のエラーは、私が "Microsoft.EntityFrameworkCore.Relational"を引っ張っていたということでした: "1.1.0"または "Microsoft.EntityFrameworkCore": "1.1.0"、mysql nugetに加えて。しかし、 "Microsoft.EntityFrameworkCore.Relational": "1.1.0"はmysqlナゲットに引っ張られるので、 "Microsoft.EntityFrameworkCore.Relational": "1.1.0"や "Microsoft"を削除するだけです。あなたのproject.jsonから「EntityFrameworkCore1.1.0」を選択すると、プロジェクトが再び素晴らしいものになります。

+0

Oracleは丁重バージョン管理をめちゃくちゃ。 '7.0.6-IR31'はEF Core 1.0用です。 '6.10.1-beta'はEF Core 1をサポートする最初にリリースされたバージョンです。1(リリースされたのは2017、7.0.6-IR31は2016からです)、EF Core 1.0で '6.10.1-beta'を使用する必要があります – Tseng

+0

" MySql.Data.EntityFrameworkCore "v6.10.1-ベータ版は "MySql.Data.EntityFrameworkCore.Design" c6.10.1-bateをインストールすることです。最初のパッケージはNuget Package Managerでは検出されませんが、2番目のパッケージの依存関係であり、自動的にインストールされます。 –

関連する問題