gpt4 book ai didi

c# - Entity Framework 4.1 无法创建 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-30 23:36:02 25 4
gpt4 key购买 nike

我有一个 WPF 应用程序,我在其中尝试将 Entity Framework 4.1 代码优先用于数据访问逻辑。我正在使用 MySQL 作为 DBMS。为简单起见,我只创建了一个数据类用户:

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; }
}

我有一个扩展 DbContext 的 ApplicationContext 类:

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数据库不包含模型元数据。确保 IncludeMetadataConvention 已添加到 DbModelBuilder 约定中

我已经在互联网上搜索并尝试了很多方法来解决这个问题,但找不到解决方案。

任何帮助将不胜感激。

最佳答案

这可能是您使用的 MySQL ado.net 提供程序版本有问题。

适用于 MySQL 的最新版本的 dotconnect 支持 EF 4.1 的代码优先,请参阅 http://www.devart.com/news/2011/dotconnects630.html

关于c# - Entity Framework 4.1 无法创建 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7292723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com