net core mysql开源框架_.NET Core 2.0+Mysql+AceAdmin 搭建快速开发框架

public class Repository : IRepository where T : BaseEntity

{

DbContext _dbContext;

public Repository(DbContext dbContext)

{

_dbContext = dbContext;

}

public int SaveChanges()

{

return _dbContext.SaveChanges();

}

public async Task SaveChangesAsync()

{

return await _dbContext.SaveChangesAsync();

}

public void Disposed()

{

throw new Exception("不允许在这里释放上下文,请在UnitOfWork中操作");

_dbContext.Dispose();

}

#region 插入数据

public bool Insert(T entity, bool isSaveChange = true)

{

_dbContext.Set().Add(entity);

if (isSaveChange)

{

return SaveChanges() > 0;

}

return false;

}

public async Task InsertAsync(T entity, bool isSaveChange = true)

{

_dbContext.Set().Add(entity);

if (isSaveChange)

{

return await SaveChangesAsync() > 0;

}

return false;

}

public bool Insert(List entitys, bool isSaveChange = true)

{

_dbContext.Set().AddRange(entitys);

if (isSaveChange)

{

return SaveChanges() > 0;

}

return false;

}

public async Task InsertAsync(List entitys, bool isSaveChange = true)

{

_dbContext.Set().AddRange(entitys);

if (isSaveChange)

{

return await SaveChangesAsync() > 0;

}

return false;

}

#endregion

#region 更新数据

public bool Update(T entity, bool isSaveChange = true, List updatePropertyList = null)

{

if (entity==null)

{

return false;

}

_dbContext.Set().Attach(entity);

if (updatePropertyList==null)

{

_dbContext.Entry(entity).State = EntityState.Modified;//全字段更新

}

else

{

updatePropertyList.ForEach(c => {

_dbContext.Entry(entity).Property(c).IsModified = true; //部分字段更新的写法

});

}

if (isSaveChange)

{

return SaveChanges() > 0;

}

return false;

}

public bool Update(List entitys, bool isSaveChange = true)

{

if (entitys==null||entitys.Count==0)

{

return false;

}

entitys.ForEach(c => {

Update(c, false);

});

if (isSaveChange)

{

return SaveChanges() > 0;

}

return false;

}

public async Task UpdateAsync(T entity, bool isSaveChange = true, List updatePropertyList = null)

{

if (entity == null)

{

return false;

}

_dbContext.Set().Attach(entity);

if (updatePropertyList == null)

{

_dbContext.Entry(entity).State = EntityState.Modified;//全字段更新

}

else

{

updatePropertyList.ForEach(c => {

_dbContext.Entry(entity).Property(c).IsModified = true; //部分字段更新的写法

});

}

if (isSaveChange)

{

return await SaveChangesAsync() > 0;

}

return false;

}

public async Task UpdateAsync(List entitys, bool isSaveChange = true)

{

if (entitys == null || entitys.Count == 0)

{

return false;

}

entitys.ForEach(c => {

_dbContext.Set().Attach(c);

_dbContext.Entry(c).State = EntityState.Modified;

});

if (isSaveChange)

{

return await SaveChangesAsync() > 0;

}

return false;

}

#endregion

#region 删除

public bool Delete(T entity, bool isSaveChange = true)

{

_dbContext.Set().Attach(entity);

_dbContext.Set().Remove(entity);

return isSaveChange ? SaveChanges() > 0 : false;

}

public bool Delete(List entitys, bool isSaveChange = true)

{

entitys.ForEach(entity =>

{

_dbContext.Set().Attach(entity);

_dbContext.Set().Remove(entity);

});

return isSaveChange ? SaveChanges() > 0 : false;

}

public virtual async Task DeleteAsync(T entity, bool isSaveChange = true)

{

_dbContext.Set().Attach(entity);

_dbContext.Set().Remove(entity);

return isSaveChange ? await SaveChangesAsync() > 0 : false;

}

public virtual async Task DeleteAsync(List entitys, bool isSaveChange = true)

{

entitys.ForEach(entity =>

{

_dbContext.Set().Attach(entity);

_dbContext.Set().Remove(entity);

});

return isSaveChange ? await SaveChangesAsync() > 0 : false;

}

#endregion

public IQueryable Entities => _dbContext.Set().AsQueryable().AsNoTracking();

//public async Task> EntitiesAsync => Task.Run(()=> _dbContext.Set().AsQueryable().AsNoTracking());

public DatabaseFacade Database => _dbContext.Database;

#region 查找

public T Get(object id)

{

return _dbContext.Set().Find(id);

}

public T Get(Expression> predicate = null)

{

return _dbContext.Set().Where(predicate).AsNoTracking().FirstOrDefault();

}

public async Task GetAsync(object id)

{

return await _dbContext.Set().FindAsync(id);

}

public async Task GetAsync(Expression> predicate = null)

{

return await _dbContext.Set().Where(predicate).AsNoTracking().FirstOrDefaultAsync();

}

public async Task> GetListAsync(Expression> predicate = null)

{

return await _dbContext.Set().Where(predicate).AsNoTracking().ToListAsync();

}

public async Task> LoadAsync(Expression> predicate = null)

{

if (predicate == null)

{

predicate = c => true;

}

return await Task.Run(() => _dbContext.Set().Where(predicate).AsNoTracking());

}

public void Dispose()

{

throw new NotImplementedException();

}

#endregion

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BootstrapAdmin是使用.NET Core + Bootstrap + PetaPoco + HTML 5 + jQuery构建的后台管理平台。可以用于所有的Web应用程序,目前版本已经升级到NET CORE具备跨平台能力。数据库方面同时支持多种数据库,详细列表见后面数据库的详细列表,切换数据源仅需更改配置文件无需重启应用程序,配置简单灵活。UI前端使用流行的Bootstrap框架布局对移动设备的兼容性非常好,自适应目前市场几乎所有终端设备。本系统还具备单一后台支持多前台的特色,提供单点登录(SSO)的能力。 BootstrapAdmin主要功能: 1、通过配置与前台网站集成 2、构建前台系统分层级菜单 3、提供单一后台支持多前台应用配置 4、提供单点登录 5、集成系统认证授权模块 6、提供角色,部门,用户,菜单,前台应用程序授权 6.1、角色对用户授权 6.2、角色对菜单授权 6.3、角色对部门授权 6.4、角色对应用程序授权(多个前台应用公用一个后台权限管理系统) 6.5、部门对用户授权 7、提供字典表用于前台网站个性化配置 8、完全响应式布局(支持电脑、平板、手机等所有主流设备) 9、内置多数据源支持,配置简单立即生效无需重启 10、内置数据内存缓存机制,页面快速响应 11、内置数据 操作日志 与用户 登录日志 跟踪记录用户 登录主机地点 浏览器 操作系统 信息 优势: 1、前台系统不用编写登录、授权、认证模块;只负责编写业务模块即可 2、后台系统无需任何二次开发,直接发布即可使用 3、前台与后台系统分离,分别为不同的系统(域名可独立) 4、可扩展为多租户应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值