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

Как включить миграцию для обновления моей базы данных в MVC4?

Я работаю над проектом с использованием MVC4 в Visual Studio 2012 и добавил столбец в таблице.

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

Что я должен делать?

Я много искал и нашел несколько способов:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  Database.SetInitializer<ResTabelaIndex>(null);
}

но не знаю, как и где это реализовать... Попробовали в app_start, global.asax и т.д.

Я обнаружил, что для включения миграции непосредственно в консоли из nuget.

Но я не могу сделать эту работу.

Команды, которые я использую:

Enable-Migrations -EnableAutomaticMigrations

== > consolse говорит, что найдено более одного контекста.      Чтобы включить использование, Enable-Migrations -ContextTypeName NameOfTheNamespace.Models.DefaultConnection

Но я не знаю, что такое -ContextTypeName, много пробовал, но не мог понять.

My Model Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Data.Entity.Migrations;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity.Infrastructure;

namespace Vista.Models
{
    public class TabelaIndex
    {
        public int ID { get; set; }
        public string n_empresa { get; set; }
        public string titulo{ get; set; }
        public string url { get; set; }
        public string imagens { get; set; }
    }

    public class DefaultConnection : DbContext
    {
        public DbSet<TabelaIndex> ResTabelaIndex { get; set; }
    }

}
4b9b3361

Ответ 1

Ошибка говорит о том, что у вас есть два контекста. Когда вы сначала создаете проект с использованием MVC 4, Visual Studio создает контекст для вашего SimpleMembership по умолчанию (проверьте Models/Account.cs) или выполните ctrl+f для UsersContext, вы можете просто удалить этот файл, если вы не используя SimpleMembership. После удаления этого контекста, добавьте следующее в класс DefaultConnection:

protected override void OnModelCreating(DbModelBuilder builder)
{
   Database.SetInitializer(new MigrateDatabaseToLatestVersion<DefaultConnection,Configuration>());
}

Если вы правильно включили миграцию, вы также должны иметь папку с именем Migrations и внутри нее класс Configuration, ее конструктор должен выглядеть так (если вы хотите включить автоматическую миграцию):

public Configuration()
{
   AutomaticMigrationsEnabled = true;
}

Ответ 3

Попробуйте ввести это в консоль:

Enable-Migrations -ContextTypeName Vista.Models.DefaultConnection

Vista.Models.DefaultConnection - это ваш контекст (класс, который наследуется от DbContext).

Ответ 4

Если у вас небольшие изменения, вам не нужна миграция. Вы можете добавить столбец в любую таблицу в базе данных с помощью sql script и добавить свойство моделировать и удалять таблицу метаданных. (резервная база данных, во-первых, без сомнения).

Или вы можете использовать Migrations следующим образом: aspnet-mvc-4-entity-framework-scaffolding-and-migrations