Формат строки инициализации не соответствует спецификации — для EF используется та же строка, которая работала для SqlClC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Формат строки инициализации не соответствует спецификации — для EF используется та же строка, которая работала для SqlCl

Сообщение Anonymous »

Я перехожу с кода, использующего Microsoft.Data.SqlClient, на Microsoft.EntityFrameworkCore в .NET Core 8.0. В первом случае у меня есть строка подключения, которая успешно подключается к локальной базе данных SQL Server Express. Я пытаюсь подключиться к той же базе данных через Entity Framework.
Я уже использовал команду Scaffold-DbContext в диспетчере пакетов для создания моделей базы данных. У меня есть этот новый код внутри приложения, в контроллере страницы:

Код: Выделить всё

using (var context = new MyDatabaseContext())
{
var result = context.Users.Where(u => u.Email.Equals(useremail));
Console.WriteLine(result.Count());
}
Этот код работает нормально, если вы удалите .Count() из результата, он просто распечатается
Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[MyWebApp.Models.User]

Однако, когда .Count() добавлен (Я предполагаю, что из-за этого ему действительно необходимо запросить базу данных?), в этой строке появляется следующая ошибка:

ArgumentException: Формат инициализации строка не соответствует спецификации, начиная с индекса 0.

Я знаю, что эта ошибка связана с какой-то ошибкой в ​​моей строке подключения. Но, как указано в заголовке, та же самая строка подключения отлично работала с SqlClient. Однако теперь строка извлекается из appsettings.json (раньше она была просто жестко запрограммирована, я знаю, плохая практика, в коде-заполнителе. Но я уже устранил связанные с этим ошибки, не распознавая, где строка находилась в " ConnectionStrings" в настройках приложения, поэтому я почти уверен, что он работает с правильной строкой).

Код: Выделить всё

"Server=.\\SQLEXPRESS;Database=my_database_name;
Trusted_Connection=True;Encrypt=False;Integrated Security=True;"
Я пытаюсь выяснить, что не так с этой строкой подключения, или может ли эта ошибка означать что-то еще. Я пробовал вручную удалить такие биты, как Trusted_Connection=True и Encrypt=False, но они не изменили ситуацию. Я также пробовал заменить Server=.\\SQLEXPRESS на Server=localhost\\SQLEXPRESS или Server=. или Server=localhost.
Редактировать: Да, я рассмотрел этот вопрос (и он нравится другим). Я использую SQL Server 2022 Express, выпущенный спустя 10 лет после последней версии, упомянутой в этом посте. Я уже попробовал самое близкое решение, предложенное для SQL Server 2012, указанное в этом сообщении, используя строку подключения

Код: Выделить всё

"Server=.\\SQLEXPRESS;Database=my_database_name;Trusted_Connection=True;"
Это не меняет ошибку (я использую аутентификацию Windows, также известную как Integrated Security, поэтому не использую поля имени пользователя и пароля для входа в базу данных).
Редактировать 2: я также пытался не избегать косой черты. Визуальный редактор указывает на недопустимую escape-последовательность \S, и когда я пытаюсь запустить приложение, в WebApplicationBuilder что-то ломается, и я получаю сообщение об ошибке

Невозможно подключиться к веб-серверу https. Веб-сервер больше не работает

Поэтому я считаю, что управляющая косая черта необходима!

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-using-sa
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»