分享一个基于EF5.0封装的BaseDAL

本文介绍了一个通用的数据访问层(BaseDAL)实现,该层利用Entity Framework进行数据操作,包括增删改查等基本功能,并提供了分页查询的方法。此外,还提供了一个DbContextFactory用于获取当前的DbContext实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 public class BaseDAL<T> where T : class,new()
 2 {
 3     protected DbContext dbContext = DbContextFactory.GetCurrentDbContext();
 4 
 5     protected DbSet<T> dbSet
 6     {
 7         get
 8         {
 9             return dbContext.Set<T>();
10         }
11     }
12 
13     protected bool SaveChanges()
14     {
15         return dbContext.SaveChanges() > 0;
16     }
17 
18     protected T Add(T entity)
19     {
20         entity = dbSet.Attach(entity);
21         dbContext.Entry<T>(entity).State = EntityState.Added;//dbSet.Add(entity);
22         return entity;
23     }
24 
25     protected void Delete(T entity)
26     {
27         dbContext.Entry<T>(entity).State = EntityState.Deleted;
28     }
29 
30     protected void Update(T entity)
31     {
32         dbContext.Entry<T>(entity).State = EntityState.Modified;
33     }
34 
35     protected T Select(Func<T, bool> whereLambda)
36     {
37         return dbSet.Where<T>(whereLambda).FirstOrDefault();
38     }
39 
40     protected List<T> SelectList(Func<T, bool> whereLambda)
41     {
42         return dbSet.Where<T>(whereLambda).ToList();
43     }
44 
45     protected List<T> SelectPageList<s>(int pageIndex, int pageSize, out int totalCount, Func<T, bool> whereLambda, Func<T, s> orderLambda, bool isAsc)
46     {
47         IEnumerable<T> enumerableList = dbSet.Where<T>(whereLambda);
48         totalCount = enumerableList.Count();
49         if (isAsc)
50         {
51             enumerableList = dbSet.Where<T>(whereLambda).OrderBy<T, s>(orderLambda).Skip<T>(pageSize * (pageIndex - 1)).Take<T>(pageSize);
52         }
53         else
54         {
55             enumerableList = dbSet.Where<T>(whereLambda).OrderByDescending<T, s>(orderLambda).Skip<T>(pageSize * (pageIndex - 1)).Take<T>(pageSize);
56         }
57         return enumerableList.ToList();
58     }
59 }
BaseDAL
 1 public class DbContextFactory
 2 {
 3     public static DbContext GetCurrentDbContext()
 4     {
 5         DbContext dbContext = (DbContext)CallContext.GetData("dbContext");
 6         if (dbContext == null)
 7         {
 8             dbContext = new jxcContext();
 9             CallContext.SetData("dbContext", dbContext);
10         }
11         return dbContext;
12     }
13 }
DbContextFactory

 

转载于:https://www.cnblogs.com/tq1226112215/p/3792618.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值