Я начал изучать MVC и ASP.NET Core. Я слежу за онлайн-видеоуроком, чтобы привыкнуть к MVC, и у меня возникла проблема при использовании Entity Framework для создания базы данных в localDb.Ошибка FileNotFound System.Data.SqlClient при создании новой базы данных с использованием платформы ASP.NET Core и Entity Framework
База данных с именем «AspNetBlog» должна быть создана в localDb (если она еще не создана). Это должно произойти в модели BlogDataContext.cs при переопределении метода OnConfiguring(), как это видно в BlogDataContext.cs.
ошибка, что я получаю "FileNotFoundException:. Не удалось загрузить файл или сборку„System.Data.SqlClient, Version = 4.0.0.0, культура = нейтральной, PublicKeyToken = b03f5f7f11d50a3a“Система не может найти указанный файл . "
полный выход ошибки можно увидеть здесь: https://gyazo.com/d8019f4b09732eb059bd291a7881b16b
Обратите внимание, что я гарантировал, что LocalDB работает, перейдя в командной строке для VS2015 и ввода sqllocaldb начать.
Я не уверен, что мне нужно сделать, чтобы исправить эту ошибку и успешно создать БД. Учебник был выпущен в начале 2015 года, и в то время он все еще использовал ASP.NET 5, поэтому, поскольку я уверен, что правильно следил за учебником, я предполагаю, что проблема там.
Ниже вы можете увидеть мой код.
BlogDataContext.cs
ошибка возникает, когда оператор "Database.EnsureCreated();" . Вывод из состояний отладки «Исключение выбрано:« System.IO.FileNotFoundException »в 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