我正在使用Entity Framework 6.0.0和MySql Server 5.6.17。
我通过nuget添加了MySql.Data.Entities,并安装了Entity Framework 6.0.0和MySql.Data 6.8.4。
一切都设置得很好,我的一些业务实体也正常工作,它启用了自动迁移(true)。
后来我添加了一些实体,然后它开始出现错误,如下:
Table 'DBNAME.dbo.TABLENAME' doesn't exist Entity Framework 6
我尝试删除整个数据库并重新创建,但没有起作用。
我尝试将Entity Framework更新到6.1.2和MySql.Data更新到6.9.5,但没有解决问题,反而出现了一些其他错误,例如:
Method not found: 'System.Data.Entity.Migrations.Builders.TableBuilder`1<!0> System.Data.Entity.Migrations.Builders.TableBuilder`1.Index(System.Linq.Expressions.Expression`1<System.Func`2<!0,System.Object>>, System.String, Boolean, Boolean, System.Object)'.
我已经将我的EF和MySql.Data更改为之前的版本(EF 6.0.0和MySql.Data 6.8.4)
我发现了另一篇文章http://bugs.mysql.com/bug.php?id=69649与我遇到了相同的错误,因此我按照以下方式修改了我的配置方法
public Configuration()
{
this.AutomaticMigrationsEnabled = true;
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
CodeGenerator = new MySql.Data.Entity.MySqlMigrationCodeGenerator();
AutomaticMigrationDataLossAllowed = true; // or false in case data loss is not allowed.
}
但是它没有解决问题。我再次遇到了相同的错误。
我的示例业务实体如下。
public class User
{
[Key]
public int UserID { get; set; }
[Display(Name = "User Email")]
[AllowHtml]
public string UserEmail { get; set; }
[MaxLength(100)]
[Required(ErrorMessage = "Enter user password")]
[Display(Name = "User Password")]
[AllowHtml]
public string UserPassword { get; set; }
[MaxLength(50)]
[Display(Name = "First Name")]
[AllowHtml]
public string FirstName { get; set; }
[MaxLength(50)]
[Display(Name = "Last Name")]
[AllowHtml]
public string LastName { get; set; }
[Display(Name = "Profile Picture")]
public string ProfilePicURL { get; set; }
public string SaltKey { get; set; }
}
提前感谢您的任何帮助