Entity Framework пытается создать базу данных, но это не то, что я хочу - PullRequest
9 голосов
/ 07 марта 2012

У меня есть небольшое приложение asp.net mvc4 (отлично работает на моем локальном компьютере), которое использует Entity Framework v4.1.0.0 с ADO.net DbContext Generator. (SQL Server 2008 r2)

Я добавляю новые версии dll, необходимые через контекстное меню «Добавить развертываемые зависимости ...» в Visual Studio 2010.

У меня есть общий хостинг с godaddy.com, я загрузил файлы на сервер и создал базу данных, теперь возникает проблема. Когда я пытаюсь просмотреть свой сайт, я получаю следующую ошибку:

В базе данных «master» отказано в разрешении CREATE DATABASE.

Я посмотрел вокруг и обнаружил, что эта ошибка была вызвана тем, что код EF сначала пытался создать базу данных. но я не хочу, чтобы код EF сначала воссоздали базу данных, как мне отключить автоматическое создание базы данных? в целом? У меня нет намерений вообще использовать функцию первого кода.

Пожалуйста, помогите.

Ответы [ 2 ]

24 голосов
/ 07 марта 2012

поместите этот код в метод Application_Start () Global.asax или конструктор в вашем классе DbContext

Database.SetInitializer<MyContext>(null);

Если вы хотите воссоздать базу данных при изменении доменов POCO, используйте следующий код вместо выше

Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
2 голосов
/ 08 марта 2012

Если вы используете EF Migrations, это то, что вы для него установили:

public sealed class DbConfiguration : DbMigrationsConfiguration<DatabaseContext>
{
    public DbConfiguration()
    {
        AutomaticMigrationsEnabled = false;
    }
}

Но это не отвечает на вопрос о самом EF Code First.Если база данных уже существует, EF не будет пытаться ее создать.Так что вам просто нужно указать его на существующую базу данных.И чтобы убедиться, что имя строки подключения совпадает с именем контекста базы данных.Если это не так, вам нужно предоставить его с некоторыми переопределениями:

public class DatabaseContext : DbContext
{
    public DatabaseContext() 
      : base(ApplicationParameters.ConnectionStringName)
    {
    }

    public DatabaseContext(string connectionStringName)
      : base(connectionStringName)
    {
    }

}
...