Я инициализирую контекст объекта Entity Framework, и это дает мне ключевое слово не поддерживается ошибка:
metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework"
Я взял строку подключения непосредственно из web.config, который работал, и изменил только путь к файлу (который я установил динамически), и вместо использования значения по умолчанию я использовал эту строку подключения явно. Что может вызвать эту ошибку?
entity-framework
connection-string
Кан Пойразоглу
источник
источник
metadata=res:
, затемres=somethingelse
с"
повсеместным синтаксисом - но они должны быть действительно рады, что они не находятся сейчас в той же комнате, что и я: - /Ответы:
Настоящая причина, по которой вы получили эту ошибку, заключается в
"
значениях в строке подключения.Если вы замените их одинарными кавычками, то все будет работать нормально.
https://docs.microsoft.com/archive/blogs/rickandy/explicit-connection-string-for-ef
(Опубликовано, чтобы другие могли получить исправление быстрее, чем я.)
источник
"
это escape-последовательность для кавычки, потому что это зарезервированный символ в XML.Я исправил это,
EntityClient
вернувшись обратноSqlClient
, хотя я использовал Entity Framework.Итак, моя полная строка подключения была в формате:
источник
Это, кажется, пропускает
providerName="System.Data.EntityClient"
бит. Уверен, что ты все понял?источник
metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider name=System.Data.EntityClient;provider connection string="{0};App=EntityFramework"
и теперь он говорит, что ключ не найден: имя провайдера. Я тоже пыталсяproviderName=...
вместо этогоprovider name=
, но не повезло.EntityConnectionStringBuilder
класс, и странно, он работает сейчас. Но я до сих пор понятия не имею, почему он не принимает мою строку, даже с вашими дополнениями.Хотите верьте, хотите нет, но переименование LinqPad.exe.config в LinqPad.config решило эту проблему.
источник
Просто используйте \ "вместо", это должно решить проблему.
источник
Убедитесь, что у вас есть,
Data Source
а неDataSource
в строке подключения. Пространство важно. Доверьтесь мне. Я идиот.источник