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