EntityFramework(以下简称EF) 作为 .NET 广受欢迎的数据库操作中间件,支持了几乎所有你用过的关系型数据库,本文将非常基础的介绍其在 Mysql 中的使用。EF 常见的使用模式有三种:CodeFirst, ModelFirst, DBFirst;三种方式各有所特点,一般要根据实际的业务情况做选择。
在完全没有历史负担的情况下,选择 CodeFirst 更为普遍,在最新的 EntityFramework Core 中 CodeFirst 几乎是唯一的选择。本文将介绍如何使用 CodeFirst 创建和操作 Mysql 数据库,文中将以微信企业号的用户同步作为案例。IDE 使用 Visual Studio for Mac。
首先,使用 Mac 版 Visual Studio 创建一个 Console Application(.NET Core) 项目:EFCoreSample。使用 Nuget 增加 EFCore 以及 Mysql 所需要的包:
- Microsoft.EntityFrameworkCore
- MySql.Data.EntityFrameworkCore
然后,由于本次例子中会使用到微信企业号的 API,我们直接引用第三方包来实现:
- Senparc.Weixin
- Senparc.Weixin.QY
第三步,在解决方案中新建一个 Models 文件夹,增加部门(Party),用户(User),标签(Tag)类,以及它们之间的相互关系部门标签(PartyTag),用户部门(UserParty),用户标签(UserTag)类,均为多对多关系。类的详细定义代码如下:
** 部门(Party) **
1 | public class Party |
** 用户(User) **
1 | public class User |
** 标签(Tag) **
1 | public class Tag |
** 部门标签(PartyTag) **
1 | public class PartyTag |
** 用户部门(UserParty) **
1 | public class UserParty |
** 用户标签(UserTag) **
1 | public class UserTag |
第四步,增加 WechatContext 类来操作数据库:
1 | public class WechatContext : DbContext |
需要注意以下几点:1,修改服务器的IP与用户名和密码;2,不要忘记连接字符串中的“Character Set=utf8”,否则会出现中文乱码;3,OnModelCreating 中定义了几个关系表的联合主键,不可缺少。
第五步,创建 UserHelper 类,放置到 Core 文件夹中,代码如下:
1 | /// <summary> |
代码中的 corpID 和 corpSecret 需要在微信企业号中获得,如果你没有企业号,那么将仅能创建一个空的数据库,而无法同步到任何数据。
最后,在 Program 中调用数据库创建以及用户同步方法:
1 | class Program |
至此,一个简单的 Demo 就完成了,由于篇幅有限,许多地方都还有需要优化的地方,此处就不一一介绍了,完整代码可以在 EFCoreSample 查看。执行后你就可以在数据库看到结果了!
本文来自 The NewIdea,作者 Carey Tzou 。
永久地址:https://www.tnidea.com/using-efcore-code-first-for-mysql.html
未经授权,拒绝任何全文及摘要转载!