EntityFramework Core 封装
public
class
EntityBaseRepository<T> : IEntityBaseRepository<T>
where
T :
class
, IEntityBase,
new
()
{
private
SchedulerContext _context;
#region Properties
public
EntityBaseRepository(SchedulerContext context)
{
_context = context;
}
#endregion
public
virtual
IEnumerable<T> GetAll()
{
return
_context.Set<T>().AsEnumerable();
}
public
virtual
int
Count()
{
return
_context.Set<T>().Count();
}
public
virtual
IEnumerable<T> AllIncluding(
params
Expression<Func<T,
object
>>[] includeProperties)
{
IQueryable<T> query = _context.Set<T>();
foreach
(
var
includeProperty
in
includeProperties)
{
query = query.Include(includeProperty);
}
return
query.AsEnumerable();
}
public
T GetSingle(
int
id)
{
return
_context.Set<T>().FirstOrDefault(x => x.Id == id);
}
public
T GetSingle(Expression<Func<T,
bool
>> predicate)
{
return
_context.Set<T>().FirstOrDefault(predicate);
}
public
T GetSingle(Expression<Func<T,
bool
>> predicate,
params
Expression<Func<T,
object
>>[] includeProperties)
{
IQueryable<T> query = _context.Set<T>();
foreach
(
var
includeProperty
in
includeProperties)
{
query = query.Include(includeProperty);
}
return
query.Where(predicate).FirstOrDefault();
}
public
virtual
IEnumerable<T> FindBy(Expression<Func<T,
bool
>> predicate)
{
return
_context.Set<T>().Where(predicate);
}
public
virtual
void
Add(T entity)
{
EntityEntry dbEntityEntry = _context.Entry<T>(entity);
_context.Set<T>().Add(entity);
}
public
virtual
void
Update(T entity)
{
EntityEntry dbEntityEntry = _context.Entry<T>(entity);
dbEntityEntry.State = EntityState.Modified;
}
public
virtual
void
Delete(T entity)
{
EntityEntry dbEntityEntry = _context.Entry<T>(entity);
dbEntityEntry.State = EntityState.Deleted;
}
public
virtual
void
DeleteWhere(Expression<Func<T,
bool
>> predicate)
{
IEnumerable<T> entities = _context.Set<T>().Where(predicate);
foreach
(
var
entity
in
entities)
{
_context.Entry<T>(entity).State = EntityState.Deleted;
}
}
public
virtual
void
Commit()
{
_context.SaveChanges();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)