C# 实体框架4.1无法创建MySQL数据库
我有一个WPF应用程序,其中我尝试首先使用EntityFramework4.1代码进行数据访问逻辑。我使用MySQL作为DBMS。为了简单起见,我只创建了一个数据类用户:C# 实体框架4.1无法创建MySQL数据库,c#,mysql,wpf,entity-framework,ef-code-first,C#,Mysql,Wpf,Entity Framework,Ef Code First,我有一个WPF应用程序,其中我尝试首先使用EntityFramework4.1代码进行数据访问逻辑。我使用MySQL作为DBMS。为了简单起见,我只创建了一个数据类用户: public class User { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Required] [MaxLength(50)] publ
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[MaxLength(50)]
public string Name { get; set; }
[Required]
[MaxLength(50)]
public string Surname { get; set; }
[Required]
[MaxLength(50)]
public string Username { get; set; }
[Required]
[MaxLength(255)]
public string Password { get; set; }
}
我有一个ApplicationContext类扩展DbContext,如下所示:
public class ApplicationContext : DbContext
{
public ApplicationContext()
: base()
{
}
public DbSet<User> Users;
}
当我尝试在App.xaml.cs
文件OnStartup
方法中使用以下代码初始化数据库时,我得到ProviderIncompatibleException
表示提供者没有返回ProviderManifestToken字符串。而内部异常表示未知数据库
Database.SetInitializer<ApplicationContext>(
new DropCreateDatabaseIfModelChanges<ApplicationContext>());
this.AppDatabaseContext = new ApplicationContext();
this.AppDatabaseContext.Database.Initialize(true);
Database.SetInitializer(
新建DropCreateDatabaseIfModelChanges());
this.AppDatabaseContext=新的ApplicationContext();
this.AppDatabaseContext.Database.Initialize(true);
我认为它尝试使用我在连接字符串中提供的数据库名称连接到数据库,但失败了,因为它不存在。但是,如果还没有,我希望它应该创建一个
我还尝试从MySQL手动创建数据库并重新运行应用程序,这次我得到了不同类型的异常:NotSupportedException
表示无法检查模型兼容性,因为数据库不包含模型元数据。确保已将IncludeMetadata约定添加到DbModelBuilder约定中
我搜索了互联网,尝试了许多事情来克服这个问题,但找不到解决办法
非常感谢您的帮助。您使用的MySQL ado.net provider版本可能有问题 最新版本的dotconnect for MySQL支持EF 4.1的代码优先,请参阅
Database.SetInitializer<ApplicationContext>(
new DropCreateDatabaseIfModelChanges<ApplicationContext>());
this.AppDatabaseContext = new ApplicationContext();
this.AppDatabaseContext.Database.Initialize(true);