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数据库的编码方式即可。具体步奏如下:
- 去mysql下找到my.in配置文件用记事本打开,找到 default-character-set=latin1,character-set-servier=latin1;将latin改成utf-8,保存即可;
- 重启mysql服务
再一次执行ef测试语句,就变成中文的了。
我们不生产代码,我们只是代码的搬运工