21

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

プロジェクトをデバッグしようとすると、マイグレーションを使用してデータベースを更新するようにエラーが表示されます。

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

私は多くのことを検索しており、次のようないくつかの方法を見つけました。

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

しかし、これを実装する方法と場所がわかりません...などで試しましapp_startglobal.asax...

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

しかし、私はこれを機能させることはできません。

私が使用するコマンド:

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; }
    }

}
4

4 に答える 4

28

コマンド:

  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

于 2015-06-20T19:23:55.193 に答える
26

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

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

移行を正しく有効にすると、フォルダーと呼ばれるフォルダーがMigrationsあり、その中にConfigurationクラスがあり、そのコンストラクターは次のようになります (自動移行を有効にする場合)。

public Configuration()
{
   AutomaticMigrationsEnabled = true;
}
于 2013-07-29T12:40:58.660 に答える
0

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

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

于 2013-07-29T11:44:56.153 に答える