CommonUtils.Core/ef/DbContextUtil.cs
(开头部分) 11KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Swashbuckle.AspNetCore.Annotations;
using System;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
namespace CommonUtils
{
public static class DbContextUtil
{
static Map<Type, object> Includes = new Map<Type, object>();
public static void SetInclude<TEntity>(Expression<Func<TEntity, object>> include) where TEntity : DbEntity
=> Includes[typeof(TEntity)] = include;
public static Expression<Func<TEntity, object>> GetInclude<TEntity>() where TEntity : DbEntity
{
var type = typeof(TEntity);
if (!Includes.ContainsKey(type))
return null;
return Includes[type] as Expression<Func<TEntity, object>>;
}
public static IQueryable<TEntity> Queryable<TEntity>(this DbContext db) where TEntity : DbEntity
{
var include = GetInclude<TEntity>();
if (include != null)
return db.Set<TEntity>().Include(include).AsNoTracking();
return db.Set<TEntity>().AsNoTracking();
}
public static IOrderedQueryable<TEntity> NewOrder<TEntity, TKey>(this DbContext db, Expression<Func<TEntity, TKey>> keySelector) where TEntity : DbEntity
=> db.Queryable<TEntity>().OrderBy(keySelector);
public static IOrderedQueryable<TEntity> NewOrderDesc<TEntity, TKey>(this DbContext db, Expression<Func<TEntity, TKey>> keySelector) where TEntity : DbEntity
=> db.Queryable<TEntity>().OrderByDescending(keySelector);
public static Page<TEntity> Page<TEntity>(this DbContext db, int? pageNum, int? pageSize, Expression<Func<TEntity, bool>> predicate, IOrderedQueryable<TEntity> order = null)
where TEntity : DbEntity
{
var page = new Page<TEntity>(pageNum, pageSize);
page.Amount = db.Queryable<TEntity>().Where(predicate).Count();
if (page.Amount > 0 && page.Size > 0)
{
if (order != null)
page.Records = order.Where(predicate).Skip(page.Skip).Take(page.Size).ToArray();
else
page.Records = db.Queryable<TEntity>().Where(predicate).Skip(page.Skip).Take(page.Size).ToArray();
}
return page;
}
public static TEntity[] List<TEntity>(this DbContext db) where TEntity : DbEntity
=> db.Queryable<TEntity>().ToArray();
public static TEntity[] List<TEntity>(this DbContext db, Expression<Func<TEntity, bool>> predicate, IOrderedQueryable<TEntity> order = null) where TEntity : DbEntity
后面还有 218 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。