#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 и посмотрите, сможете ли вы запустить его. Затем вы можете сравнить этот код со своим.