DbSession的作用:
1.拥有所有Dal的实例。
2.SaveChange()把实体进行一次整体的提交
public class DbSession { public IUserInfoDal UserInfoDal { get { return StaticDalFactory.GetUserInfoDal(); } } public IOrderInfoDal OrderInfoDal { get { return StaticDalFactory.GetOrderInfoDal(); } } /// <summary> /// 拿到当前的EF的上下文,然后进行 把修改实体进行一个整体提交。 /// </summary> /// <returns></returns> public int SaveChanges() { return DbContextFactory.GetCurrentDbContext().SaveChanges(); } }
IDbSession的代码:
public interface IDbSession { IUserInfoDal UserInfoDal { get; } IOrderInfoDal OrderInfoDal { get; } int SaveChanges(); }
DbContextFactory的GetCurrentDbContext方法:
public class DbContextFactory { public static DbContext GetCurrentDbContext() { //一次请求共用一个实例 DbContext db = CallContext.GetData("DbContext") as DbContext; if (db == null) { db = new DataModelContainer(); CallContext.SetData("DbContext", db); } return db; } }
原文:http://www.cnblogs.com/sunliyuan/p/6391818.html