【发布时间】:2012-08-01 19:46:07
【问题描述】:
我只是想尝试使用实体框架来代替 NHibernate。我正在使用 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);
}
}
}
}
我得到了这个异常:“实体类型 User 不是当前上下文模型的一部分。”
所以这是我的问题,如果我使用 MySql 可以自动生成数据库吗?
【问题讨论】:
-
我只是在程序集上添加 [assembly: EdmSchema] 在 User 类上添加 [EdmEntityType],现在我得到了这个异常:“该类型没有任何关键成员。RelationshipType 或 EntityType 必须要么具有关键成员或具有关键成员的 BaseType。”但是我已经有了 Id 属性,我也尝试了 [Key] 属性,这是同样的错误。
标签: c# mysql entity-framework ef-code-first