2

私は EF コードの最初のモデルで asp.net mvc に取り組んでいます。最初に EF コードを使用して移行をプロジェクトに適用しようとしています。MySql データベースを使用しています。現在、EF 4.3.1 バージョンと mysql コネクタ/.net の 6.6.4.0 バージョンを使用しています。プロジェクトに移行を正常に追加できました。つまり、一連のコマンドを実行してもエラーは発生しませんでした。私はこれらの手順に従いました、

PM> Enable-Migrations

PM> Add-Migration InitialMigration

PM> update-database -verbose

これらの手順により、プロジェクトに移行フォルダーが作成され、移行フォルダー内に構成ファイルと timestamp_Initialmigration ファイルが作成されます。構成ファイルに次のコードを追加しました。

SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());

その後、次のようにクラスに1つのフィールドを追加しました

public int newprop{get; set;}

その後、PM コンソールで update-database -verbose コマンドを実行します。

アプリケーションを実行すると、次のようなエラーがスローされます。

「'フィールド リスト' の不明な列 'Extent1.newprop'」

このエラーが発生する理由を教えてください。間違った方法に行ったのでしょうか。教えてください。

4

2 に答える 2

1

自動移行を使用していない場合

Database.SetInitializer(new MigrateDatabaseToLatestVersion());

 public class MyMigrationConfiguration : DbMigrationsConfiguration<MyDbContext>
    {
        public MyMigrationConfiguration()
        {
            AutomaticMigrationsEnabled = true; // Are you using this ?????
            AutomaticMigrationDataLossAllowed = true;
        }
    }

次に、PMコマンドレットを使用してEFに、別の移行を追加してデータベースを更新するように指示する必要があります。

PM> Enable-Migrations  //already done this ?
PM> Add-Migration myLabel
PM> Update-Database

ヘルプが必要な場合は、Webで「コードベースの移行」を検索してください

于 2012-12-17T11:36:20.877 に答える
0

これはOPに答えるのが少し遅れています...しかし、Googleでの最初のヒットとしてポップアップするので、とにかく先に進みます:)

ここでの問題は、MSSQL と比較して MySQL には多くの制限があることです。* 特に、大文字と小文字を区別するファイルシステム (Linux ホスト) 上の mysql では、テーブル名に大文字が含まれていない場合があります。* また、キーは 767 バイトに制限されており、整数型である必要があります。* 次に、Mysql.Data パッケージのマイグレーション ジェネレーターの一部に問題があります。たとえば、名前を変更する場合、「dbo」は取り除かれません。

insidemysql.comでこのガイドをご覧ください。int型キャストで使用するために Aspnet.Identity スタックを再構成する方法について説明しますTKey

HistoryContext にもフックしたプロジェクトがあり、__MigrationHistory の構造を変更できます。テーブル/列の名前とサイズを変更します。IdentityConfig のリメイクもあります。

  1. https://github.com/mschr/ASP.NET-MVC5.MySql-Extended-Bootstrap/tree/master/my.ns.entities/DbContexts/MigrationConfig
  2. https://github.com/mschr/ASP.NET-MVC5.MySql-Extended-Bootstrap/tree/master/my.ns.entities/IdentityConfig

次に、それをコンテキストに接続し(IdentityDbContextMySqlMigrationScriptGeneratorを参照)、前述のおよびHistoryContextFactoryMigrations.Configuration クラスで有効にします(私のIdentitiyMigrations.Configurationを参照)

于 2016-10-29T03:28:12.407 に答える