web-dev-qa-db-ja.com

MVC4でデータベースを更新するために移行を有効にする方法は?

Visual Studio 2012でMVC4を使用するプロジェクトに取り組んでおり、表に列を追加しました。

プロジェクトをデバッグするときに、移行を使用してデータベースを更新するようにエラーが表示されるようになりました。

私がしなければならないこと?

私は多くの検索を行ってきましたが、次のような方法を見つけました。

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

しかし、これを実装する方法と場所がわからない... app_startglobal.asax etc ...

私が見つけたのは、nugetからコンソールで直接移行を有効にすることでした。

しかし、私はこの仕事をすることはできません。

使用するコマンド:

Enable-Migrations -EnableAutomaticMigrations

==>コンソールは、複数のコンテキストが見つかったことを示しています。使用を有効にするには、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; }
    }

}
21
user2232273

エラーは、2つのコンテキストがあることを示しています。 MVC 4を使用してプロジェクトを最初に作成するとき、Visual StudioはデフォルトでSimpleMembershipのコンテキストを作成(Models/Account.csを確認)するか、UsersContextに対してctrl+fを実行します。 SimpleMembershipを使用していない場合、このファイルを削除できます。このコンテキストを削除した後、次をDefaultConnectionクラスに追加します。

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

移行を正しく有効にした場合は、Migrationsというフォルダーとその内部にConfigurationクラスも必要です。そのコンストラクターは次のようになります(自動移行を有効にする場合)。

public Configuration()
{
   AutomaticMigrationsEnabled = true;
}
26
SOfanatic

コマンド:

  1. enable-migrations default context
  2. add-migration InitialCreate(スナップショットの生成用)
  3. add-migration InitialCreate(スナップショットを適用するため)
  4. update-database
  5. update-database -verbose

詳細な説明はこちら: http://www.dotnet-tricks.com/Tutorial/entityframework/R54K181213-Understanding-Entity-Framework-Code-First-Migrations.html

28
Pathik Tailor

これをコンソールに入力してみてください。

Enable-Migrations -ContextTypeName Vista.Models.DefaultConnection

Vista.Models.DefaultConnectionは、コンテキスト(DbContextを継承するクラス)です。

4
OJ Raqueño

小さな変更がある場合、移行する必要はありません。 sqlスクリプトを使用してデータベース上の任意のテーブルに列を追加し、プロパティをモデルに追加してメタデータテーブルを削除できます。 (最初に間違いなくデータベースをバックアップします)。

または、次のような移行を使用できます。 aspnet-mvc-4-entity-framework-scaffolding-and-migrations

0
Jeyhun Rahimov