我有一個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