UserDal继承BaseDal
using PMS.IDAL;
using PMS.Model;
namespace PMS.DAL
{
public partial class UserDal : BaseDal<User>
{
}
}
数据访问接口层的构建
然后我们建立相应的IbaseDal接口和IUserDal接口,并且使UserDal类实现IUserDal接口
IBaseDal:
using System;
using System.Linq;
namespace PMS.IDAL
{
public interface IBaseDal<T> where T:class,new()
{
IQueryable<T> LoadEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLamada);
IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount,
System.Linq.Expressions.Expression<Func<T, bool>> whereLambda,
System.Linq.Expressions.Expression<Func<T, s>> orderbyLambda, bool isAsc);
bool DeleteEntity(T entity);
bool EditEntity(T entity);
T AddEntity(T entity);
}
}
IUserDal:
using PMS.Model;
namespace PMS.IDAL
{
public partial interface IUserDal:IBaseDal<User>
{
}
}
UserDal实现IUserDal接口:
public partial class UserDal : BaseDal<User>,IUserDal
数据会话层的构建
抽象工厂类AbstractFactory:
using System.Configuration;
using System.Reflection;
using PMS.IDAL;
namespace PMS.DALFactory
{
public partial class AbstractFactory
{
//读取保存在配置文件中的程序集名称与命名空间名
private static readonly string AssemblyPath = ConfigurationManager.AppSettings["AssemblyPath"];
private static readonly string NameSpace = ConfigurationManager.AppSettings["NameSpace"];
/// <summary>
/// 获取UserDal的实例
/// </summary>
/// <returns></returns>
public static IUserDal CreateUserInfoDal()
{
var fullClassName = NameSpace + ".UserInfoDal";
return CreateInstance(fullClassName) as IUserDal;
}
/// <summary>
/// 通过反射获得程序集中某类型的实例
/// </summary>
/// <param name="className"></param>
/// <returns></returns>
private static object CreateInstance(string className)
{
var assembly = Assembly.Load(AssemblyPath);
return assembly.CreateInstance(className);
}
}
}
数据会话类DbSession:
using System.Data.Entity;
using PMS.IDAL;
using PMS.DAL;
namespace PMS.DALFactory
{
public partial class DbSession:IDbSession
{
public DbContext Db
{
get { return DbContextFactory.CreateContext(); }
}
private IUserDal _userDal;
public IUserDal UserDal
{
get { return _userDal ?? (_userDal = AbstractFactory.CreateUserInfoDal()); }
set { _userDal = value; }
}
/// <summary>
/// 工作单元模式,统一保存数据
/// </summary>
/// <returns></returns>
public bool SaveChanges()
{
return Db.SaveChanges() > 0;
}
}
}








