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

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

Сообщение Anonymous »

Я перехожу с кода, использующего Microsoft.Data.SqlClient, на Microsoft.EntityFrameworkCore в .NET Core 8.0. В первом случае у меня есть строка подключения, которая успешно подключается к локальной базе данных SQLExpress. Я пытаюсь подключиться к той же базе данных через 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: Format of the initialization string does not conform to specification starting at index 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#»