Подтвердить что ты не робот

Остановить Entity Framework от изменения базы данных

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

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

Я не хочу, чтобы инфраструктура сущности когда-либо меняла мою базу данных. Нет. Никогда. Даже не пытайтесь. На самом деле не так уж сложно изменить базы данных; Мне было бы гораздо комфортнее, если бы я сам это сделал. Мне не нужна инфраструктура, чтобы держать меня за руку при разработке базы данных.

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

Мне повезло?

4b9b3361

Ответ 1

Если вы не хотите, чтобы EF создавал вашу базу данных, вы можете отключить инициализатор базы данных:

public class SchoolDBContext: DbContext 
{
    public SchoolDBContext() : base("SchoolDBConnectionString")
    {            
        //Disable initializer
        Database.SetInitializer<SchoolDBContext>(null);
    }
    public DbSet<Student> Students { get; set; }
    public DbSet<Standard> Standards { get; set; }
}

См. http://www.entityframeworktutorial.net/code-first/turn-off-database-initialization-in-code-first.aspx

Ответ 2

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

http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx

Ссылки из ответов на комментарии:
http://automapper.codeplex.com/
Начало работы с AutoMapper

edit: я неправильно понял цель, вам следует указать этот ответ, где был указан следующий правильный код:

Если вы не хотите, чтобы EF создавал вашу базу данных, вы можете отключить инициализатор базы данных

Database.SetInitializer<MyContext>(null);

Ответ 3

Когда вы объявляете, что вы инициализатор, используйте базовый класс:

public class DatabaseInitialiser : CreateDatabaseIfNotExists<MyContext>

а не:

public class DatabaseInitialiser : RecreateDatabaseIfModelChanges<MyContext>

Или, если вы используете:

Database.SetInitializer<MyContext>(new RecreateDatabaseIfModelChanges<MyContext>);

замените это на:

Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>);

Ответ 4

Так как code first в значительной степени точно выполняет то, что вы описываете, я не понимаю ваш вопрос.

Если вы не хотите, чтобы EF возился с вашей базой данных, сгенерируйте модель из существующей базы данных.