Как настроить ProviderManifestToken для EF CodeFirst в строке подключения - PullRequest
1 голос
/ 25 июля 2011

В настоящее время я передаю имя базы данных конструктору DbContext.В разделе connectionStrings моего App.Config файла я добавил строку подключения и указал имя провайдера:

<connectionStrings>
    <add name="myConnectionString" connectionString="[..]" providerName="System.Data.SqlClient"/>
</connectionStrings>

Теперь я хочу получить строку подключения из другого вида конфигурацииисточник, но ProviderIncompatibleException выбрасывается.Исключение содержит следующее сообщение:

"The provider did not return a providermanifesttoken string".

Итак, как я могу указать имя поставщика в строке подключения?В настоящее время моя строка содержит data source, database и некоторые другие параметры конфигурации.

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

Поставщик определяется типом соединения, а соединение создается его фабрикой соединений, которая установлена ​​в статическом свойстве Database.DefaultConnectionFactory. Значение по умолчанию для этого свойства SqlConnectionFactory, поэтому, если вы не подключаетесь к другому серверу базы данных (например, SQL Server CE), оно должно просто работать. Если он не уверен, что ваша строка подключения верна. Это исключение иногда вызывается, если EF не может подключиться к серверу SQL (мне кажется, я видел это исключение либо с недопустимыми учетными данными, недопустимым именем базы данных или недопустимым именем экземпляра SQL-сервера).

Edit:

Для полноты: фабрика соединений используется, только если вы передаете строку соединения в контекст. Вы также можете передать весь экземпляр соединения, и фабрика соединений не будет использоваться. Маркер манифеста провайдера будет выведен из типа соединения, которое вы передадите в контекст.

0 голосов
/ 21 декабря 2012

Это может не быть вашей проблемой, но эта ошибка также возникает, если вы просто не можете подключиться к своей базе данных - наша сеть блокирует порт 1433. Открыл его, ошибка исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...