0

MySqlデータベースに対してEnable-Migrationsコマンドを実行すると、次のエラーが発生しました。

PM> Enable-Migrations -ContextTypeName CodeFirstEFMySqlA1.Models.DataContext
Checking if the context targets an existing database...
System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex
   at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
   at System.Data.Entity.Migrations.DbMigrator.ScaffoldInitialCreate(String namespace)
   at System.Data.Entity.Migrations.Design.MigrationScaffolder.ScaffoldInitialCreate()
   at   System.Data.Entity.Migrations.Design.ToolingFacade.InitialCreateScaffoldRunner.Scaffold(MigrationScaffolder scaffolder)
   at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
startIndex cannot be larger than length of string.
Parameter name: startIndex

プロジェクトは以下を使用して作成されました。-ASP.NETMVC4-EF5コードファースト-MySqlデータベースサーバー-MySql.Data、MySql.Data.Entity-カスタムデータベース初期化子は、移行履歴テーブルを作成するためにSystem.Data.Entity.IDatabaseInitializerを使用して実装されました。

モデル:

public class Product
{
    [Key]
    public int Id { get; set; }

    [Required, MaxLength(100)]
    public string Name { get; set; }

    public int Rank { get; set; }

    [MaxLength(100)]
    public string Type { get; set; }
}

コマンド「Enable-Migrations」を実行した後、Configuration.csクラスは生成されましたが、移行クラスは生成されませんでした。「Add-Migration」コマンドを実行しようとすると、同じエラー「startIndexを文字列の長さより大きくすることはできません」が発生します。

私の試みは、EF5コードファーストとデータベース移行機能がMySqlデータベースサーバーに対してどれだけうまく使用できるかをテストすることです。私が見るように、データベースの作成はカスタムデータベース初期化子を使用して行うことができますが、データベースの移行を機能させることができませんでした。

この問題についてのご意見は大歓迎です。よろしくお願いします!!

4

1 に答える 1

0

Kirk Woll のおかげで、上記の問題の解決策を見つけることができました。

MySQL Data Connector v.6.6.4 を使用しましたが、これには EF 5 のサポートが組み込まれています。これで、データベース移行は MySql で問題なく動作します。以前のデータベースを削除し、EF に Update-Database コマンドを使用して新しいデータベースを作成させる必要があったことに注意してください。

参考:MySQL 5.5 + .NET Connector + Entity Framework + Migrations = FormatException

于 2012-12-29T17:39:35.660 に答える