Dotnetcore получил сообщение об ошибке при подключении к базе данных: SEHException: ‘Внешний компонент выдал исключение.’

#c# #asp.net-core #localdb

#c# #asp.net-core #localdb

Вопрос:

Всякий раз, когда я пытаюсь подключиться к базе данных, я получаю эту ошибку:

 System.Runtime.InteropServices.SEHException: 'External component has thrown an exception.'
  

Я пробую подход code first, подход к базе данных и model first, но все еще сталкиваюсь с этой ошибкой. У меня нет проблем с Windows form и classic ASP.NET MVC Framework , но в dotnetcore!
Я создал новый пустой dotnet core проект и добавил сервисы в ConfigureServices () в `Startup.cs’ следующим образом:

     // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<Models.ShoppingListDBContext>();
        services.AddControllers();
    }
  

Эксперты, у вас есть какие-нибудь идеи?

Факты:

  • Ядро Dotnet версии 3.1
  • Привилегия администратора
  • Я уверен в этом connection string и даже пытаюсь MSSQLServer , но получаю ту же ошибку.
  • внутреннее исключение равно нулю.

выстрел

Кто-нибудь сталкивается с этой ошибкой!

Ответ №1:

Пожалуйста, удалите

 Database.EnsureCreated();
  

из конструктора и измените свою Program # Main следующим образом:

     public static async Task Main(string[] args)
    {
        var webHost = CreateHostBuilder(args)
            .Build();

        using var scope = webHost.Services.CreateScope();
        var context = scope.ServiceProvider.GetRequiredService<BlogDataContext>();
        context.Database.EnsureCreated();

        await webHost.RunAsync();
    }
  

Комментарии:

1. Спасибо за ваш ответ, но моя ошибка пришла к program.cs ! все еще уродливый

2. Давайте попробуем заменить базу данных. EnsureCreated() с базой данных. Перенести ()

3. почти ничего не изменилось, я думаю, проблема в чем-то другом … возможно, в зависимости или Windows

4. Да, вероятно. Но вы все равно должны использовать мой код. Пожалуйста, попробуйте загрузить начальный проект от Microsoft и посмотрите, сможете ли вы запустить его. Затем вы можете сравнить этот код со своим.