通用权限
1、引入命名空间。
using Microsoft.EntityFrameworkCore;
项目结构
新建BBC解决方案。在解决方案下新建BBC_Api,BBC_data,BBC_Service,BBC_Web文件夹。
本次项目采用DB First模式,新建数据库后在包管理控制台下使用
Add:Scaffold-DbContext -Connection “连接字符串” Microsoft.EntityFrameworkCore.SqlServer -OutputDir "创建后放的文件夹"创建对应实体。
1、BBC_data文件夹下新建标准类库,命名Data。
一方面用来映射数据库实体,另一方面用来装在其他的实体,如View实体,逻辑映射实体等。
2、BBC_Service文件夹下新建标准类库,命名Service。
引用Data层,用来实现提供web的逻辑操作。
3、BBC_Web文件夹下新建Web项目,命名web。
引用Data层和Service层,用来实现对用户可视化展示。
4、BBC_Api文件夹下Api项目,命名Api。
引用Data层和Service层,对不同端提供数据接口。
BBC_data
1、新建一个Entity文件。
新建一个Entity文件夹用于存放表对应的实体属性
。
如图
2、新建DbContext文件。
新建BBCDbContext类,配置映射关系
。
namespace Data
{
public class BBCDbContext: DbContext
{
public BBCDbContext(DbContextOptions<BBCDbContext> options) : base(options) {
}
public virtual DbSet<LogLogin> LogLogin {
get; set; }
public virtual DbSet<LogOperate> LogOperate {
get; set; }
public virtual DbSet<LogPage> LogPage {
get; set; }
public virtual DbSet<SysDictionary> SysDictionary {
get; set; }
public virtual DbSet<SysMenu> SysMenu {
get; set; }
public virtual DbSet<SysMenuRole> SysMenuRole {
get; set; }
public virtual DbSet<SysRole> SysRole {
get; set; }
public virtual DbSet<SysUser> SysUser {
get; set; }
public virtual DbSet<SysUserRole> SysUserRole {
get; set; }
}
}
用于实现数据库与项目实体映射桥梁。
BBC_Service
BBC_Web
1、配置数据库连接字符串。
appsettings.json
。
"ConnectionStrings": {
"BBC": "Server=.;uid=sunyong;pwd=1qaz!QAZ;Database=BBC;"
}
2、将连接字符串注入到Starup.cs。
Startup.cs->ConfigureServices
。在Starup.cs文件夹下面的ConfigureServices方法下面添加如下代码
//数据库连接映射
services.AddDbContext<BBCDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BBC")));
BBC_Api
1、配置数据库连接字符串。
appsettings.json
。
"ConnectionStrings": {
"BBC": "Server=.;uid=sunyong;pwd=1qaz!QAZ;Database=BBC;"
}
2、将连接字符串注入到Starup.cs。
Startup.cs->ConfigureServices
在Starup.cs文件夹下面的ConfigureServices方法下面添加如下代码
//数据库连接映射
services.AddDbContext<BBCDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("BBC")));
封装通用方法
BBC_Service
1、新建BaseService文件夹。
ServiceCore.cs
用于封装通用的增删查改的方法,用于整表操作。
namespace Service
{
public class ServiceCore<T> where T : class, new()
{
private BBCDbContext db {
get; set; }
public ServiceCore(BBCDbContext _db) {
db = _db;
}
public bool Add(T entity) {
db.Set<T>().Add(entity);
return db.SaveChanges() > 0;
}
public bool Remove(T entity) {
db.Entry(entity).State = EntityState.Deleted;
return db.SaveChanges() > 0;
}
public bool Update(T entity) {
db.Entry(entity).State = EntityState.Modified;
return db.SaveChanges() > 0;
}
public T Entity(int id) {
return db.Set<T>().Find(id);
}
}
}
2、新建Service.Dal文件夹。
ServiceDal.cs
用于封装常用的逻辑操作。注:ServiceCore方法和ServiceDal方法可以合并成一个,这边为了后面用到方便所以这边暂时分开。
namespace Service
{
public class ServiceDal<T> where T : class, new()
{
private BBCDbContext db;
public ServiceDal(BBCDbContext _db) {
db = _db;
}
public bool Adds(List<T> entities) {
db.AddRange(entities);
return db.SaveChanges() == entities.Count();
}
public bool Removes(Li