zoukankan      html  css  js  c++  java
  • 在linq查询环境下通过sql语句来访问数据库

    接上一篇随笔

    这里主要介绍在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);
    
            }
  • 相关阅读:
    eclipse internal web browser 不可用在linux下的解决
    Asp.Net MVC4入门指南(10):第三方控件Studio for ASP.NET Wijmo MVC4 工具应用
    生成树计数MatrixTree定理
    strcpy与strncpy
    [置顶] 游戏开发技术总结(经典之作)第七集 广阔天地游戏大地图的形成方法的地图移动
    Inside COM接口
    UTC时区表(.Net)
    java练习
    如果Imageview与Linearlayout有叠加且可选资源长度不同,如何布局?
    【Android测试】Android抓包解析全过程
  • 原文地址:https://www.cnblogs.com/jin-/p/5681532.html
Copyright © 2011-2022 走看看