using AppData;
using AppModels.Enum;
using AppModels.result.Base;
using AppData;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace AppData
{
/// <summary>
/// 增删改查
/// </summary>
/// <typeparam name="T"></typeparam>
public class CURD<T> where T : class
{
/// <summary>
/// 数据库
/// </summary>
private AppDataEntities db = new AppDataEntities();
/// <summary>
/// 创建
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public ResultT<T> Create(T value)
{
DbSet<T> dbSet = db.Set<T>();
dbSet.Add(value);
var r = db.SaveChanges();
return new ResultT<T>
{
State = r == 1 ? PayState.SUCCESS : PayState.FAIL,
Message = "函数调用成功,结果请参考state",
data = value
};
}
/// <summary>
/// 删除
/// </summary>
/// <param name="value"></param>
/// <returns></returns>y
public ResultT<T> Delete(T value)
{
throw new NotImplementedException();
}
/// <summary>
/// 查询
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public ResultT<List<T>> Query(Expression<Func<T, bool>> predicate)
{
DbSet<T> dbSet = db.Set<T>();
var entity = dbSet.Where(predicate);// db.T.Where(predicate);
if (entity.Any() == false)
{
return new ResultT<List<T>>
{
Message = "没有找到对应的数据",
State = PayState.FAIL
};
}
return new ResultT<List<T>>
{
State = PayState.SUCCESS,
data = entity.ToList(),
Message = "查询成功"
};
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public ResultT<T> Update(T value)
{
var dbEntityEntry = db.Entry(value);
var notUpdateColumns = new List<string>
{
"Id",
"CreateTime",
"CreateUserId",
"CompanyId"
};
foreach (var rawProperty in dbEntityEntry.Entity.GetType().GetTypeInfo().DeclaredProperties)
{
if (!notUpdateColumns.Contains(rawProperty.Name))
{
dbEntityEntry.Property(rawProperty.Name).IsModified = true;
}
}
var r = db.SaveChanges();
return new ResultT<T>
{
State = r == 1 ? PayState.SUCCESS : PayState.FAIL,
Message = "函数调用成功,结果请参考state",
data = value
};
}
}
}