上一节课我们新建了一个小程序的登录页面,并通过WebAPI来判断登录的账号密码是否正确,不过账号密码我们是直接写在程序里的,正式开发是需要从数据库里进行读取的。因此,这节课我们来说一下怎么通过Entity Framework Core 来访问数据库。
首先,我们先来简单的介绍一下Entity Framework Core,Entity Framework Core (EFCore)是微软推荐的基于.NET Core framework的应用程序数据访问技术。它是轻量级,可扩展并且支持跨平台开发。EF Core是一种对象关系映射器(ORM)。通过应用程序实体对象和关系数据库中的数据的映射,使得开发人员能够以面向对象的方式处理数据。
一、首先,新建一个数据库MiniProgramsDB,然后在数据库里新建一个Users表,Id是主键和标识列。

二、打开VisualStudio 2017,还是在我们上一节课使用的项目基础上修改,在解决方案上右键单击-添加-新建项目,添加一个类库LoginApi.DAL,然后在新建这个项目上右键单击-管理Nuget程序包,安装 Microsoft.EntityFrameworkCore.SqlServer程序包

三、在新建的项目中添加一个实体类 Users,字段和我们数据库的表字段一致
public class Users
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
}
四、 在新建的项目中添加一个类 DataContext,继承EF Core DbContext,然后添加一个Users实体集,这样我们就可以通过DataContext 来操作我们的Users表
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
public DbSet<Users> Users { get; set; }
}
以上代码中用到的DbContext和DbSet的简单说明:
1、DbContext表示与数据库的会话,并提供与数据库通信的API,具有以下功能:
1)数据库连接
2)数据操作,如查询和持久化
3)更改追踪
4)模型构建
5)数据映射
6)对象缓存
7)事务管理
2、DbSet:表示可用于创建,读取,更新和删除操作的实体集。
五、在LoginApi项目依赖项-右键-添加引用,添加LoginApi.DAL引用。

六、打开appsettings.json,把数据库连接字符串添加进去,这样我们就可以通过配置文件来读取数据库连接字符串。
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=MiniProgramsDB;uid=sa;pwd=123456;"
}
}
七、 打开Startup.cs,在ConfigureServices方法里添加代码:
public void ConfigureServices(IServiceCollection services)
{
//添加的代码
services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
八、打开 LoginController,添加代码
private DataContext db;
public HomeController(DataContext context)
{
db = context;
}
添加位置如下图:

做完以上这些步骤,我们就可以通过 DataContext来访问数据库了。
修改之前登陆方法的代码,在判断用户名和密码之前添加下面代码:
var userdb = db.Users.Where(u =>u.UserName==user.Name&&u.Password==user.Password).FirstOrDefault();
通过用户名和密码从数据库查询实体类,然后根据是否有查询结果进行判断:
if (userdb!=null)
{
return Json(new { Code="0",Name=user.Name});
}
else
{
return Json(new { Code = "1"});
}
修改位置如下图:

这样,我们就可以根据小程序端接收到的用户名和密码来查询数据库是否有这个用户来判断是否登录成功。




