0

私はMVCおよびASP.NETコアについて学習し始めました。私はMVCに慣れるためにオンラインビデオチュートリアルに従っており、Entity Frameworkを使ってlocalDbにデータベースを作成するときに問題が発生しました。エラーFileNotFound ASP.NET CoreおよびEntity Frameworkを使用して新しいデータベースを作成するときのSystem.Data.SqlClient

'AspNetBlog'という名前のデータベースはlocalDbに作成する必要があります(まだ作成されていない場合)。これは、BlogDataContext.csに見られるように、OnConfiguring()メソッドをオーバーライドするときにBlogDataContext.csモデルで発生します。

私は取得していますエラーがにFileNotFoundException」です。ファイルまたはアセンブリをロードできませんでした 『System.Data.SqlClientの、バージョン= 4.0.0.0、文化=中立、なPublicKeyTokenは= b03f5f7f11d50a3a』ファイルを見つけることができないシステムでは、指定しました。 "

エラーの完全な出力をここで見ることができます:私はlocalDbはVS2015のコマンドプロンプトに入ると開始sqllocaldb入力することによって実行されていることを確実にしているhttps://gyazo.com/d8019f4b09732eb059bd291a7881b16b

注意。

私はこのエラーを修正し、DBを正常に作成するために何をすればよいか分かりません。このチュートリアルは2015年初頭にリリースされましたが、当時はまだASP.NET 5を使用していましたので、チュートリアルを正しく実行していると確信していますので、そこに問題があると仮定します。

以下、私のコードを見ることができます。

BlogDataContext.cs

エラーが発生したときのステートメント "Database.EnsureCreated();"が達成された。デバッグからの出力は "例外がスローされました:" System.IO.FileNotFoundException 'in EntityFramework.Relational.dll "を出力します。

using Microsoft.Data.Entity; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 

namespace AspNetBlog.Models 
{ 
public class BlogDataContext : DbContext 
{ 
    public DbSet<Post> Posts { get; set; } 

    public BlogDataContext() 
    { 
     Database.EnsureCreated(); 
    } 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     base.OnConfiguring(optionsBuilder); 

     var connectionString = @"Server=(LocalDb)\MSSQLLocalDb;Database=AspNetBlog"; 

     optionsBuilder.UseSqlServer(connectionString); 
    } 
} 
} 

Post.cs

PostsController.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks; 
using Microsoft.AspNetCore.Mvc; 
using AspNetBlog.Models; 

// For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 

namespace AspNetBlog.Controllers 
{ 
    public class PostsController : Controller 
    { 
     // GET: /<controller>/ 
     public IActionResult Index() 
     { 
      return View(); 
     } 

     [HttpPost] 
     public async Task<IActionResult> Create(Post post) 
     { 
      if (!ModelState.IsValid) 
       return View(post); 

      post.PostedDate = DateTime.Now; 
      post.Author = User.Identity.Name; 

      // Create new instance of blog data context 
      BlogDataContext db = new BlogDataContext(); 
      db.Posts.Add(post); // - What should be added 
      await db.SaveChangesAsync(); // - Save changes to DB (Execute) 

      return View(); 
     } 
    } 
} 

project.json

ここ"EntityFramework.SqlServer": "7.0.0-beta8"を使用していることがわかります。私が従うチュートリアルでは、バージョン"7.0.0-beta4"が代わりに使用されています。チュートリアルで使用したものと同じバージョンを使用しようとしましたが、.NET Coreと互換性がないようです。

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.1", 
     "type": "platform" 
    }, 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.1", 
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.1", 
    "EntityFramework.SqlServer": "7.0.0-beta8" 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

ありがとうございます。どんな提案も歓迎され、感謝しています。

答えて

0

現在、Entity Frameworkコアのリリース候補があります。 project.jsonを更新するようにしてください。

+0

"EntityFramework.SqlServer"を "7.0.0-beta8"に置き換えようとしました。 "Microsoft.EntityFrameworkCore.SqlServer ":" 1.0.1 "と同様に動作します。ありがとう、私はこれを代わりに使用し続けます。 – Imayan

0

最後に修正されました。このプロジェクトではJSON私は次の依存関係を追加しました」ファイル:

"System.Data.SqlClient": "4.1.0"

は小文字ではない、それはそのように書かれていることを確認し、。これは実際に試した最初のものの1つでしたが、最初は小文字で書いてあり、コンソールからエラーがありました。私がやっているチュートリアルは、「Up and Running with ASP.NET 5」です。 (私のように、このチュートリアルを行って同じ問題に遭遇した他の人は、これを見つけることができます)

関連する問題