私は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%" ]
}
}
ありがとうございます。どんな提案も歓迎され、感謝しています。
"EntityFramework.SqlServer"を "7.0.0-beta8"に置き換えようとしました。 "Microsoft.EntityFrameworkCore.SqlServer ":" 1.0.1 "と同様に動作します。ありがとう、私はこれを代わりに使用し続けます。 – Imayan