Как отключить автоматическое создание таблиц в EF 5.0?

Я установил Entity Framework 5.0 RC для Framework 4.0 в свой проект. Но когда я пытаюсь получить данные из представлений, я получаю сообщение об ошибке. EF пытается создать таблицу для этого объекта.


person Hryhorii    schedule 23.05.2012    source источник


Ответы (2)


Используйте это при запуске вашего приложения, чтобы отключить инициализацию и миграцию базы данных:

Database.SetInitializer<YourContextType>(null);
person Ladislav Mrnka    schedule 24.05.2012
comment
Конструктор слишком поздно, Грег. Прочтите ответ еще раз. Запуск приложения находится в вашем файле global.asax - person EightyOne Unite; 17.10.2012
comment
Есть ли способ отключить его глобально, или мне нужно сделать это для каждого dbContext? - person JMarsch; 05.03.2013
comment
@JMarsch: вам нужно сделать это для каждого типа контекста. - person Ladislav Mrnka; 05.03.2013

Если вы хотите полностью отключить инициализацию/миграцию базы данных независимо от того, в каком проекте вы используете свой контекст, вы можете добавить статический конструктор в свой контекст для вызова инициализатора. Это гарантирует, что SetInitializer будет вызываться один раз перед первой конструкцией/использованием вашего контекста.

public class YourContext : DbContext
{
    static YourContext()
    {
        // don't let EF modify the database schema...
        Database.SetInitializer<YourContext >(null);
    }

    public YourContext() : base("name=YourContext")
    {}
    ...
}

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

person Adriaan de Beer    schedule 30.07.2013