接上一篇随笔
这里主要介绍在linq环境下,如果实现用sql来访问数据库,同时也介绍在EF框架中如何添加新的方法来访问数据库。
1、首先,在数据访问层(EF.DAO,EF.IDAO)中添加具体的函数来实现sql语句访问数据库。在BaseDao中添加如下两个函数
/// <summary> /// 根据sql语句来查询数据 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns></returns> public virtual List<T> LoadEntitesBySql(string sql, params System.Data.SqlClient.SqlParameter[] pars) { return objectContext.Database.SqlQuery<T>(sql, pars).ToList(); } /// <summary> /// 根据sql语句执行增删改 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns></returns> public int ExecuteSql(string sql, params System.Data.SqlClient.SqlParameter[] pars) { return objectContext.Database.ExecuteSqlCommand(sql, pars); }
同时在IBaseDao中添加这两个函数。
List<T> LoadEntitesBySql(string sql, params System.Data.SqlClient.SqlParameter[] pars); int ExecuteSql(string sql, params System.Data.SqlClient.SqlParameter[] pars);
这里之所以在基类BaseDao中定义这两个函数,是因为这两个函数可以被所有的实体公用,他们是公益函数,如果想对某一个实体实现具体的操作,那就只需要到BaseDao对应的派生类中。
2、在业务逻辑层(EF.BLL,EF.IBLL)中调用数据访问层的函数。这里在BaseService中添加如下两个函数来调用数据层的函数
/// <summary> /// 根据where语句来查询数据 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns></returns> public virtual List<T> LoadEntitesBySql(string sql, params System.Data.SqlClient.SqlParameter[] pars) { return CurrentDao.LoadEntitesBySql(sql, pars); } /// <summary> /// 根据sql语句执行增删改 /// </summary> /// <param name="sql"></param> /// <param name="pars"></param> /// <returns></returns> public virtual int ExecuteSql(string sql, params System.Data.SqlClient.SqlParameter[] pars) { return CurrentDao.ExecuteSql(sql, pars); }
同时在IBaseService中添加这两个函数。
3、在运行项目中添加函数来调用这两个函数实现sql语句对数据库的访问
public void LoadEntitesByWhere1() { EF.IBLL.IABCService ics = new EF.BLL.ABCService(); List<DBModel.ABC> lis = ics.LoadEntitesBySql("select * from ABC where ID_int >29"); int s = lis.Count; } public int ExecuteSql1() { EF.IBLL.IABCService ics = new EF.BLL.ABCService(); SqlParameter[] sqlParam = new SqlParameter[] { new SqlParameter("@id", 29) }; return ics.ExecuteSql("update ABC set SerialNo_int=4 where ID_int>@id", sqlParam); }