在针对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.NET MVC4 - EF5 Code First - 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 Code First和数据库迁移功能对MySql数据库服务器的使用情况。我看到数据库创建可以使用自定义数据库初始化程序完成,但是我无法使数据库迁移工作。
对此问题的任何想法都非常感谢 在此先感谢!!
答案 0 :(得分: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