Сначала код EF - поставщик не возвратил строку ProviderManifestToken - PullRequest
3 голосов
/ 16 сентября 2011

Я пытаюсь запустить очень простой пример EF Code First, но столкнулся с вышеуказанной проблемой.Я следовал совету здесь ( Как настроить ProviderManifestToken для EF Code First ), но безрезультатно.Наконец, мне удалось заставить EF создать свою базу данных и таблицы, передав фактическую строку подключения в DBContext вместо имени строки подключения, которое я определил.

Вот как я определил строку подключения изначально в app.config

<connectionStrings>
    <add name="ProductContext" 
         connectionString="integrated security=SSPI;
                           data source=MYMACHINE;
                           persist security info=False;
                           initial catalog=Product"
         providerName="System.Data.SqlClient" />
</connectionStrings>

Имя «ProductContext» соответствует классу ProductContext, а база данных Product не существует.

Следуя советам предыдущего потока, я передал имя строки подключения в ProductContext и базовый cstor DBContext.Это тоже не сработало.

Наконец, вместо этого я передал строку подключения выше, и все заработало, была создана БД и таблицы.

Я использую SQL Server 2008 и EF 4.1.Есть идеи, что я делаю не так?

Спасибо,

Кен

Обновление

Приложение представляет собой WPFприложение, а не веб-приложение.Я получаю то же исключение после удаления строки подключения из app.config :

"При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.сервер не был найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр) "

Ответы [ 2 ]

3 голосов
/ 25 декабря 2014

У меня была похожая проблема на EF6 VS 2013, проблема была решена, когда я выбрал «Сохранить пароль» в Entity Framework - Сначала обратный код инженера - Диалог свойств соединения.Надеюсь, это кому-нибудь поможет.

3 голосов
/ 29 ноября 2011

Проблема с ответом на этот вопрос заключается в том, что виновником может быть более одного вопроса.

Тем не менее, я вижу пару вещей для проверки:

  1. Ваше имя источника данных выглядит неверным . Вам необходимо объявить имя хоста и имя экземпляра. Пример: . \ SQLEXPRESS (обратите внимание на точку.) Или MyServerHostName \ MySqlInstanceName .

    Убедитесь, что у вас есть действительный источник данных, с помощью SQL Server Management Studio и сначала попробуйте его там.

  2. Права доступа . Вы используете интегрированную защиту, поэтому контекст безопасности приложения, устанавливающего соединение с базой данных, должен иметь надлежащие права. Что нужно проверить:

    Используя SQL Server Mgmt Studio, подключитесь к вашей базе данных. Выберите вашу базу данных на левой панели (Обозреватель объектов) -> Базы данных -> Выберите базу данных -> Безопасность -> Пользователи. Убедитесь, что вы можете проверить, что учетной записи, используемой для запуска приложения, либо предоставлены права явно, либо вы можете наследовать их, будучи участником групп.

Когда у меня возникла эта ошибка, моя проблема оказалась в том, что я смешал Integrated Security = SSPI с «Username =» и «Password =» ... не понимая, что мне нужна Integrated Security = false; мои параметры пользователя и пароля игнорировались.

Не уверен насчет этого: я читал, что некоторые люди предлагают (по крайней мере, для устранения неполадок) установить Persist Security Info = true.

...