接上一篇随笔

这里主要介绍在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", ) };
return ics.ExecuteSql("update ABC set SerialNo_int=4 where ID_int>@id", sqlParam); }

在linq查询环境下通过sql语句来访问数据库的更多相关文章

  1. Linq模型ObjectContext下查看Sql语句。

    ObjectContext 并没有提供 LINQ to SQL DataContext.Log 这样的功能,要查看实际生成的 T-SQL 语句,要么借助 SQL Server Sql Profiler ...

  2. asp.net linq查询环境搭建

    本文是以sqlserver2008为数据库,vs2013为开发工具来介绍的. 要搭建这样一个数据库的操作环境,首先建立一个类库项目 然后在这个类库项目中添加几个类:DBDataContext数据库上下 ...

  3. mysql 使用Navicat Lite如何打开‘查询编辑器’,使用sql语句对表进行操作!

    今天第一次使用mysql,尽然连查询编辑器都找不到,研究了半天,询问了下大牛,才搞出来,准备写下来,后面方面忘记了有查找的地方,哈哈哈~~ 如何打开"查询编辑器",使用sql语句进 ...

  4. Microsoft SQL Server下的SQL语句

    SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作.一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库dro ...

  5. oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析

    oracle查看执行最慢与查询次数最多的sql语句 注:本文来源 于<oracle查看执行最慢与查询次数最多的sql语句> 前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率 ...

  6. 金蝶k/3 K3云之家消息查询发送是否成功SQL语句

    金蝶k/3 K3云之家消息查询发送是否成功SQL语句 1是成功,0是还在轮询中未发送,4是发送失败 select * into #tempUserID from ( union select t_Gr ...

  7. centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复

    centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复 有时候我们会碰到这样的业务场景: 1.将大的数据库恢复到本地进行业务测试 ...

  8. SQL语句往Oracle数据库中插入日期型数据(to_date的用法)

    Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下: --SQL语句往Oracle数据库中插入日期型数据 ...

  9. 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction

    今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...

随机推荐

  1. Intellij Idea安装主题

    IDEA中jar包形式的主题比较常见.(顺便给大家推荐一个主题站:http://www.ideacolorthemes.org/themes/) 从主菜单中依次选择[File]>[Import ...

  2. OpenSSl编译

    1.下载openssl代码,下载地址:http://www.openssl.org/source/ ,如果使用winrar解压失败的话(提示不能创建符号链接),可以关闭UAC.2.下载安装Active ...

  3. 关于"zoom“ 的一点小认识

    最早接触zoom是在清除浮动的时候,原因就是zoom能触发IE的haslayout,当时也没深究其原理,今天,在查看张鑫旭的对overflow与zoom”清除浮动”的一些认识时,其中提到zoom是比例 ...

  4. [C++程序设计]对“&”和“*”运算符

    对“&”和“*”运算符再做些说明:(1) 如果已执行了“pointer_1=&a;”语句,请问&*pointer_1的含义是什么?“&”和“*”两个运算符的优先级别相同 ...

  5. 解决pip安装时 UnicodeDecodeError 问题

    在装django的时候用pip安装就出现了问题,一大堆的红字,然后联想到很多次用pip安装都以失败告终,于是今天抽空看了看出现问题的原因. 情况如下图:

  6. LFS,编译自己的Linux系统 - 编译临时系统

    编译GCC-4.8.2 PASS 1 解压并重命名 cd /mnt/lfs/sources tar -Jxf ../mpfr-3.1.2.tar.xz mv mpfr-3.1.2 mpfr tar - ...

  7. iOS Plist NSUserDefaults 数据存储

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. linux修改文件权限

    ubuntu 下修改文件访问权限 Ubuntu下修改目录权限命令如下: chmod 600 name (只有所有者有读和写的权限) chmod 644 name (所有者有读和写的权限,组用户只有读的 ...

  9. 全 Javascript 的 Web 开发架构:MEAN

    http://developer.51cto.com/art/201404/434759.htm 全 Javascript 的 Web 开发架构:MEAN 引言 最近在Angular社区的原型开发者间 ...

  10. eMMC的MMC模式与SPI模式

    MMC存贮卡可以分为MMC和SPI两种工作模式,MMC模式是标准的默认模式,具有MMC的全部特性.而SPI模式则是MMC存贮卡可选的第二种模式,这个模式是MMC协议的一个子集,主要用于只需要小数量的卡 ...