namespace IStation.DAL
|
{
|
/// <summary>
|
/// 数据库访问基类
|
/// </summary>
|
/// <typeparam name="T">实体类类型</typeparam>
|
public partial class BaseDAL<T>
|
where T : Model.BaseModel, new()
|
{
|
/// <summary>
|
/// 获取表名称
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <returns></returns>
|
public string TableName
|
{
|
get
|
{
|
var objType = typeof(T);
|
var att = objType.GetCustomAttributes(typeof(SugarTable), true);
|
if (att != null && att.Count() > 0)
|
return (att[0] as SugarTable).TableName;
|
return objType.Name;
|
}
|
|
}
|
|
/// <summary>
|
/// 连接配置
|
/// </summary>
|
public virtual ConnectionConfig ConnectionConfig
|
{
|
get
|
{
|
return default;
|
}
|
}
|
/// <summary>
|
/// 默认连接对象
|
/// </summary>
|
public ISqlSugarClient Connection
|
{
|
get
|
{
|
return new SqlSugarClient(ConnectionConfig);
|
}
|
}
|
|
#region Insert
|
|
/// <summary>
|
/// 插入指定对象到数据库中
|
/// </summary>
|
public virtual long Insert(T entity)
|
{
|
if (entity == null)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Insertable(entity).ExecuteReturnSnowflakeId();
|
}
|
}
|
|
/// <summary>
|
/// 插入指定对象集合到数据库中
|
/// </summary>
|
public virtual bool Inserts(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Insertable(list).ExecuteReturnSnowflakeIdList().Count() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 插入并返回
|
/// </summary>
|
public virtual List<long> InsertsR(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Insertable(list).ExecuteReturnSnowflakeIdList();
|
}
|
}
|
|
/// <summary>
|
/// 大批量插入
|
/// </summary>
|
public virtual bool BulkInserts(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
list.ForEach(x => x.ID = SnowFlakeSingle.instance.NextId());
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Fastest<T>().BulkCopy(list) > 0;
|
}
|
}
|
|
#endregion
|
|
#region Update
|
|
/// <summary>
|
/// 更新对象属性到数据库中
|
/// </summary>
|
public virtual bool Update(T entity)
|
{
|
if (entity == null)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Updateable(entity).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 更新部分
|
/// </summary>
|
public virtual bool UpdatePart(T entity, List<string> pros)
|
{
|
if (entity == null)
|
return default;
|
if (pros == null || pros.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Updateable(entity).UpdateColumns(pros.ToArray()).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 更新指定对象集合到数据库中
|
/// </summary>
|
public virtual bool Updates(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Updateable(list).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 批量更新部分
|
/// </summary>
|
public virtual bool UpdatesPart(List<T> list, List<string> pros)
|
{
|
if (list == null || list.Count() < 1)
|
return default;
|
if (pros == null || pros.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Updateable(list).UpdateColumns(pros.ToArray()).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 大批量更新
|
/// </summary>
|
public virtual bool BulkUpdates(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Fastest<T>().BulkUpdate(list) > 0;
|
}
|
}
|
|
#endregion
|
|
#region Delete
|
|
/// <summary>
|
/// 从数据库中删除指定对象
|
/// </summary>
|
public virtual bool Delete(T entity)
|
{
|
if (entity == null)
|
return default;
|
if (entity.ID < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Deleteable<T>().Where(entity).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 从数据库中删除指定对象集合
|
/// </summary>
|
public virtual bool Deletes(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
if (list.Exists(x => x.ID < 1))
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Deleteable<T>().Where(list).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 根据指定对象的ID,从数据库中删除指定对象
|
/// </summary>
|
public virtual bool DeleteByID(long ID)
|
{
|
if (ID < 1)
|
return default;
|
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Deleteable<T>().Where(x => x.ID == ID).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 通过id列表删除
|
/// </summary>
|
public virtual bool DeleteByIds(List<long> ids)
|
{
|
if (ids == null || ids.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Deleteable<T>().Where(x => ids.Contains(x.ID)).ExecuteCommand() > 0;
|
}
|
}
|
|
/// <summary>
|
/// 从数据库中删除所有对象
|
/// </summary>
|
public virtual bool DeleteAll()
|
{
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.DbMaintenance.TruncateTable<T>();
|
}
|
}
|
|
#endregion
|
|
#region Query
|
|
/// <summary>
|
/// 返回数据库所有的对象集合
|
/// </summary>
|
public virtual List<T> GetAll()
|
{
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Queryable<T>().ToList();
|
}
|
}
|
|
/// <summary>
|
/// 查询数据库,返回指定ID的对象
|
/// </summary>
|
public virtual T GetByID(long id)
|
{
|
if (id < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Queryable<T>().First(x => x.ID == id);
|
}
|
}
|
|
/// <summary>
|
/// 通拓id列表获取
|
/// </summary>
|
/// <returns></returns>
|
public virtual List<T> GetByIds(List<long> ids)
|
{
|
if (ids == null || ids.Count < 1)
|
return default;
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Queryable<T>().OrderBy(x => x.ID).Where(x => ids.Contains(x.ID)).ToList();
|
}
|
}
|
|
#endregion
|
|
#region Exist
|
|
/// <summary>
|
/// 判断数据库是否存在对象
|
/// </summary>
|
public virtual bool Exist(long id)
|
{
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
return db.Queryable<T>().Where(x => x.ID == id).Any();
|
}
|
}
|
|
#endregion
|
|
#region Cover
|
|
/// <summary>
|
/// 覆盖
|
/// </summary>
|
public virtual bool Covers(List<T> list)
|
{
|
if (list == null || list.Count < 1)
|
return default;
|
|
using (SqlSugarClient db = new SqlSugarClient(ConnectionConfig))
|
{
|
db.Ado.BeginTran();
|
db.Deleteable<T>().ExecuteCommand();
|
var bol = db.Insertable(list).ExecuteCommand() > 0;
|
if (!bol)
|
{
|
db.Ado.RollbackTran();
|
return false;
|
}
|
db.Ado.CommitTran();
|
}
|
return true;
|
}
|
|
#endregion
|
}
|
}
|