我有一个WPF应用程序,其中我试图使用实体框架4.1代码第一数据访问逻辑。我使用MySQL作为DBMS。为简单起见,我创建只是一个数据类用户:实体框架4.1无法创建MySQL数据库
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;
}
我的名字ApplicationContext
添加一个连接字符串app.config
文件。
<configuration>
<connectionStrings>
<clear/>
<add name="ApplicationContext"
connectionString="server=localhost;User Id=myuser;Password=mypassword;Persist Security Info=True;database=mydatabase"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>
当我尝试用App.xaml.cs
文件OnStartup
方法中下面的代码初始化数据库,我得到ProviderIncompatibleException
说The provider did not return a ProviderManifestToken string.
和内异常说Unknown database
。
Database.SetInitializer<ApplicationContext>(
new DropCreateDatabaseIfModelChanges<ApplicationContext>());
this.AppDatabaseContext = new ApplicationContext();
this.AppDatabaseContext.Database.Initialize(true);
我认为它试图连接到数据库名称与我在连接字符串中提供的数据库名称,因为它不存在而失败。但是,我希望它应该创建一个,如果还没有。
我也试图从MySQL手工创建数据库,并重新运行该应用程序,这一次我得到一个不同类型的异常:NotSupportedException
说Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions
我已经在网上搜索并尝试了很多东西要克服这个问题却找不到解决办法。
任何帮助将不胜感激。
非常感谢你。有效... – Furkan