当前位置:   article > 正文

【Design】DbSession设计 数据访问层的入口_dbsession := &dbsession{session: dbengines[db].new

dbsession := &dbsession{session: dbengines[db].newsession()}

DbSession 是数据访问层的入口

拥有所有Dal实例

  1. public class DbSession
  2. {
  3. public IUserInfoDal UserInfoDal
  4. {
  5. get { return DalFactory.GetUserInfoDal(); }
  6. }
  7. public IOrderInfoDal OrderInfoDal
  8. {
  9. get { return DalFactory.GetOrderInfoDal(); }
  10. }
  11. public int SaveChanges()
  12. {
  13. return DbContextFactory.GetCurrentDbContext().SaveChanges();
  14. }
  15. }

 

BaseDal中

去除所有SaveChanges

  1. public T Add(T entity)
  2. {
  3. Db.Set<T>().Add(entity);
  4. //Db.SaveChanges();
  5. return entity;
  6. }

 

SaveChanges

提交到数据库工作由数据访问层提到业务逻辑层

数据批量提交,减少数据提交次数,提高性能

 

在业务逻辑中

  1. public class UserInfoService
  2. {
  3. DbSession dbSession = new DbSession();
  4. public UserInfo Add(UserInfo userInfo)
  5. {
  6. dbSession.UserInfoDal.Add(userInfo);
  7. dbSession.SaveChanges();
  8. return userInfo;
  9. }
  10. }

之前的方式是添加每一个用户都与数据库交互一次,现在这种方式添加10个用户,一次性提交,减少数据库压力

 

为了降低耦合性,可以定义接口IDbSession

  1. public interface IDbSession
  2. {
  3. IUserInfoDal UserInfoDal { get; }
  4. IOrderInfoDal OrderInfoDal { get; }
  5. int SaveChanges();
  6. }

DbSession实现IDbSession接口

public class DbSession: IDbSession

 

为了共用实例,可以定义工厂模式

  1. public class DbSessionFactory
  2. {
  3. //一个请求共用一个DbSession
  4. public static IDbSession GetCurrentDbSession()
  5. {
  6. IDbSession db = CallContext.GetData("DbSession") as IDbSession;
  7. if (db == null)
  8. {
  9. db = new DbSession();
  10. CallContext.SetData("DbSession", db);
  11. }
  12. return db;
  13. }
  14. }

然后在业务逻辑层中,直接定义接口,减少耦合性

  1. public class UserInfoService
  2. {
  3. IDbSession dbSession = DbSessionFactory.GetCurrentDbSession();
  4. public UserInfo Add(UserInfo userInfo)
  5. {
  6. dbSession.UserInfoDal.Add(userInfo);
  7. dbSession.SaveChanges();
  8. return userInfo;
  9. }
  10. }

 

 

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号