SQL Server 2008: убедитесь, что IncludeMetadataConvention добавлен в соглашения DbModelBuilder - PullRequest
5 голосов
/ 10 января 2012

Я получаю полную ошибку:

Невозможно проверить совместимость модели, поскольку база данных не содержит метаданных модели.Убедитесь, что IncludeMetadataConvention был добавлен к соглашениям DbModelBuilder.

Я использовал пробовал это с SQL Server Compact, и он работает нормально, но хостинг-провайдер поддерживает CE только для выделенных серверов, и я на общем ресурсепланирую, поэтому я использую SQL Server 2008. Моя строка подключения в БД имеет следующий формат:

  <connectionStrings>
    <add name="DBContext"
         connectionString="Data Source=1.1.1.1;Initial Catalog=dbname;User Id=user;Password=pass;"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

У меня также есть DatabaseInitializer, который работает в Application_Startup.Если понадобится какой-нибудь дополнительный код, просто дайте мне знать?У меня также нет созданной модели данных edmx, я использую EF Code First.

Я изменил код инициализатора. Всегда удаляю базу данных, но теперь я получаю сообщение об ошибке, в CREATE DATABASE отказано в доступе к базе данных «master».,Я не знаю, почему я получаю это, когда говорю начальному каталогу использовать.

Сейчас я передаю нулевое значение SetInitializer, но теперь я получаю следующую ошибку:

Невозможно открыть базу данных "dbname", запрошенную при входе в систему.Ошибка входаНе удалось войти в систему для пользователя 'user'.

Я все еще использую строку подключения сверху.

1 Ответ

4 голосов
/ 10 января 2012

Я изменил код инициализатора. Удаляю базу данных всегда, но теперь получаю ошибка, разрешение CREATE DATABASE отклонено в базе данных «master». я не знаю, почему я получаю это, когда я говорю об этом в Первоначальном каталоге использовать.

Вы никогда не должны делать это на виртуальном хостинге, потому что у вас почти никогда нет разрешения на непосредственное создание базы данных. Базы данных могут быть созданы только в специальном интерфейсе хостинг-провайдера. SQL-сервер позволяет вам удалить базу данных, которой вы владеете, но как только вы удалили ее, ваши разрешения исчезли, и вы не можете воссоздать ее без разрешения на создание баз данных (на виртуальном хостинге у вас никогда нет этого разрешения).

Сейчас я передаю нулевое значение SetInitializer, но теперь я получаю следующую ошибку:

Слишком поздно. Ваша база данных удалена. Вы должны создать его через интерфейс хостинг-провайдера или связаться с вашим хостинг-провайдером, чтобы воссоздать его.

У меня также есть DatabaseInitializer, который запускается в Application_Startup.

Вы не можете использовать какой-либо встроенный инициализатор базы данных на виртуальном хостинге, поскольку все они ожидают, что они создадут базу данных. Вы можете использовать пользовательский инициализатор для заполнения таблиц в существующей базе данных.

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