1

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 を使用すると、データベースを自動的に生成できますか?

4

1 に答える 1

0

なぜ機能するのかわかりませんが、現在は機能しています。コードから接続プロパティを削除し、app.config ファイルを作成して、このブログでデータベース作成時のバグを修正しましたhttp://brice-lambson.blogspot.fr/2012/05/using-entity-framework -code-first-with.htmlで動作するようになりました

于 2012-08-02T09:59:57.593 に答える