【问题标题】:Entity Framework Code First - Create Database with MySql? [closed]实体框架代码优先 - 使用 MySql 创建数据库? [关闭]
【发布时间】: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


【解决方案1】:

我不知道为什么它有效,但现在有效。我从代码中删除了连接属性,并创建了一个 app.config 文件,并使用此博客 http://brice-lambson.blogspot.fr/2012/05/using-entity-framework-code-first-with.html 更正了数据库创建中的错误,现在它可以工作了

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多