EF + Mysql

在   NuGet 中安装 ef和 mysql

Install-Package EntityFramework
Install-Package MySql.Data.Entity.EF6
Install-Package MySql.Data.Entity -Version 6.9.3

执行完以后再 web.cong会自动多出如下代码 

 <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>

在connectionstring标签里加入如下片段

  <connectionStrings>
    <add name="DbConMySql" providerName="MySql.Data.MySqlClient" 
         connectionString="Data Source=192.168.0.220;Port=3306;
         Initial Catalog=NewMysql;uid=root;pwd=1;
         />
  </connectionStrings>

添加实体

    public class Blog
    {
        public int BlogId { get; set; }

        public string Name { get; set; }

        public virtual List<Post> Posts { get; set; }
    }
    public class Post
    {
        public int PostId { get; set; }

        public string Title { get; set; }

        public string Content { get; set; }

        public int BlogId { get; set; }

        public virtual Blog Blog { get; set; }
    }

添加数据上下文

     [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class BloggingContext : DbContext
    {
       
        public BloggingContext()
            : base("DbConMySql")
        { }

        public DbSet<Blog> Blogs { get; set; }

        public DbSet<Post> Posts { get; set; }
    }

测试ef

    using (BloggingContext db = new BloggingContext())
    {
         for (int i = 0; i < 10; i++)
         {
             db.Blogs.Add(new Blog { Name = "小明" + i });
         }
         db.SaveChanges();
     } 

在Mysql的cmd下查询:

可以看到在数据库中已经生成了实体对应的两张表 和一张额外的自动迁移表(后面会说到这张表的作用)

但是 查询blogs中的数据可以看出,出现了中文乱码的情况,参考网上的资料 说在连接字符窜中加上数据库编码Charset=utf8,但是我试了一下还是乱码,所以不得不从

mysql数据库入手,这里我们手动更改mysql数据库的编码方式即可。具体步奏如下:

  1.  去mysql下找到my.in配置文件用记事本打开,找到 default-character-set=latin1,character-set-servier=latin1;将latin改成utf-8,保存即可;
  2. 重启mysql服务

 再一次执行ef测试语句,就变成中文的了。

原文地址:https://www.cnblogs.com/drzhong/p/ef_mysql.html