我遇到了mysql没有使用ef6创建数据库的问题。此代码在MSSQL Server中运行良好(只需将提供程序更改为“system.data.sqlclient”):
public class MyDbContext : DbContext
{
public MyDbContext(string connectionString)
: base(GetConnection(connectionString),true)
{
Database.SetInitializer(new CreateDatabaseIfNotExists());
//Database.Initialize(true);
Database.CreateIfNotExists();
}
public DbSet MyData { get; set; }
public static DbConnection GetConnection(string connectionString)
{
var factory = DbProviderFactories.GetFactory("MySql.Data.MySqlClient");
var connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
return connection;
}
}
问题在“database.createifnotexists();”行。它引发了一个空引用异常…“database.initialize(true);”和“database.createifnotexists()”都会引发相同的错误。
我的连接字符串是:
Server=localhost;Database=MyDatabase;Uid=myUser;Pwd=myPassword;
完全相同的代码在sql server上运行良好。我甚至删除了数据库,SQL服务器重新创建了它。
在做一些测试时,使用mysql shell,我手动创建了“mydatabase”,虽然没有发生错误,但是表并没有创建。
为了mysql自动创建数据库和表,我需要一些额外的代码吗?
其他测试:我添加了以下代码:
if (!Database.Exists())
{
Database.Create();
}
“database.exists()”工作正常,问题在“.database.create()”中。真的,我想我在这里遗漏了一些东西。
*编辑*
我的app.config。(我没有使用app.config中的连接字符串)