ASP.NET Core 2 с Entity Framework, показывающий, что в файле конфигурации приложения не найдена строка подключения с именем «####» - PullRequest
0 голосов
/ 26 ноября 2018

Я пишу приложение ASP.NET Core MVC.Я использую Entity Framework.У меня есть слой доступа к данным, куда я добавил свой edmx из базы данных, которую я разработал.Проект MVC ссылается на этот проект доступа к данным.

Когда я пытаюсь получить доступ к чему-либо из БД, возникает эта ошибка:

Произошло необработанное исключение при обработке запроса.

InvalidOperationException: Нет строки подключения с именем 'DefaultConnection 'можно найти в файле конфигурации приложения.

System.Data.Entity.Internal.LazyInternalConnection.get_ConnectionHasModel ()

Я настроил строку подключения в обоих режимах доступа к даннымпроект и основной проект.Но все равно получаю эту ошибку.

Это appsetting.json:

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "**My DB Details**"
    }
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

Есть идеи, что происходит?

Ответы [ 4 ]

0 голосов
/ 27 ноября 2018

Мне пришлось пойти на компромисс из-за нехватки времени.Сейчас я использую ядро ​​EF в проекте ASP.NET Core, и оно работает нормально.Удален слой DataAccess.Будет использовать его, как только все ошибки в .NET Core будут устранены.

0 голосов
/ 26 ноября 2018

Приложение appjson.config неправильно.

"ConnectionStrings": {
      "DefaultConnection": "your connection string"
    }

Удалите тег Data, и он должен работать.

0 голосов
/ 27 ноября 2018

Это не так просто, когда у вас есть .NET Core веб-проект, и он поддерживается проектом EF6 в качестве библиотеки классов.

Чтобы все заработало, вам, возможно, придется:

  • Ссылка на полный каркас в .NET Core веб-проекте
  • Предоставьте строку подключения, используя шаблон Factory, для DbContext
  • Совместно используйте строку подключения в обоих проектах,возможно, через переменные окружения

Создание web.config вручную в веб-проекте .NET Core вручную плохо, так как его нет до публикации.web.config будет создан к тому времени на основе appsetting.

https://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6?view=aspnetcore-2.1 - документации о том, как заставить .NET Core и EF6 говорить.

0 голосов
/ 26 ноября 2018

Так как вы используете EF 6 в библиотеке .NET Framework, то, вероятно, это выглядит в файле web.config.Поэтому поместите его в файл web.config , как описано здесь :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection"
         connectionString="**My DB Details**" />
  </connectionStrings>
</configuration>

Предыдущий ответ (для чисто EF Core):

Строки подключения в .NET Core должны выглядеть следующим образом:

"ConnectionStrings": {
    "DefaultConnection": "**My DB Details**"
}

Не тот узел "Data", который у вас есть сейчас.

...