NHibernate の代わりに Entity Framework を使用してみたかっただけです。MySql データベースを使用しています。そのため、コード ファースト システムでいくつかのテストを行いました。データベースはMsSqlで問題なく、スキーマは自動生成されます。しかし、MySql で試してみたところ、スキーマの生成が機能しません。
public class Context : DbContext
{
public Context()
{
}
public Context(string str)
: base (str)
{
}
public DbSet<User> Users
{
get;
set;
}
}
public class User
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
}
class Program
{
static void Main(string[] args)
{
var sqlBuilder =
new SqlConnectionStringBuilder
{
DataSource = "localhost",
InitialCatalog = "test",
Password = "",
UserID = "root"
};
var entityBuilder =
new EntityConnectionStringBuilder
{
Provider = "MySql.Data.MySqlClient",
ProviderConnectionString = sqlBuilder.ConnectionString,
Metadata = @"res://*"
};
var str = entityBuilder.ConnectionString;
using (var ctx = new Context(str))
{
ctx.Users.Add(new User() // exception here
{
Name = "test"
});
ctx.SaveChanges();
}
using (var ctx = new Context(str))
{
foreach (var user in ctx.Users)
{
Console.WriteLine("id:{0} name:{1}", user.Id, user.Name);
}
}
}
}
そして、この例外が発生しました:「エンティティタイプのユーザーは、現在のコンテキストのモデルの一部ではありません。」
MySql を使用すると、データベースを自動的に生成できますか?