0

Я начал изучать 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%" ] 
    } 
} 

Благодарим за понимание. Любые предложения приветствуются и оцениваются.

ответ

0

В настоящее время существует кандидат на выпуск ядра Entity Framework Core. Попробуйте обновить ваш project.json, чтобы указать на него.

+0

Пробовал заменять «EntityFramework.SqlServer»: «7.0.0-beta8» на «Microsoft.EntityFrameworkCore.SqlServer ":" 1.0.1 ", и он также работает. Спасибо, я продолжу использовать это вместо этого. – Imayan

0

Исправлена ​​ошибка. В проекте.Файл JSON»Я добавил следующую зависимость:

"System.Data.SqlClient": "4.1.0"

Убедитесь, что она написана таким образом, а не с строчными буквами. Это была одна из первых вещей, которые я пробовал, но сначала написал ее в строчных буквах и получил сообщение об ошибке с консоли. Учебник, который я делаю, - «Вверх и работа с ASP.NET 5». (Так что другие, подобные мне, которые делают этот урок и сталкиваются с одной и той же проблемой, могут найти это на всякий случай)

 Смежные вопросы

  • Нет связанных вопросов^_^