2011-09-03 123 views
1

我有一个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方法中下面的代码初始化数据库,我得到ProviderIncompatibleExceptionThe 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手工创建数据库,并重新运行该应用程序,这一次我得到一个不同类型的异常:NotSupportedExceptionModel compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions

我已经在网上搜索并尝试了很多东西要克服这个问题却找不到解决办法。

任何帮助将不胜感激。

回答