在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", ) };
return ics.ExecuteSql("update ABC set SerialNo_int=4 where ID_int>@id", sqlParam); }
在linq查询环境下通过sql语句来访问数据库的更多相关文章
- Linq模型ObjectContext下查看Sql语句。
ObjectContext 并没有提供 LINQ to SQL DataContext.Log 这样的功能,要查看实际生成的 T-SQL 语句,要么借助 SQL Server Sql Profiler ...
- asp.net linq查询环境搭建
本文是以sqlserver2008为数据库,vs2013为开发工具来介绍的. 要搭建这样一个数据库的操作环境,首先建立一个类库项目 然后在这个类库项目中添加几个类:DBDataContext数据库上下 ...
- mysql 使用Navicat Lite如何打开‘查询编辑器’,使用sql语句对表进行操作!
今天第一次使用mysql,尽然连查询编辑器都找不到,研究了半天,询问了下大牛,才搞出来,准备写下来,后面方面忘记了有查找的地方,哈哈哈~~ 如何打开"查询编辑器",使用sql语句进 ...
- Microsoft SQL Server下的SQL语句
SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作.一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库dro ...
- oracle查看执行最慢与查询次数最多的sql语句及其执行速度很慢的问题分析
oracle查看执行最慢与查询次数最多的sql语句 注:本文来源 于<oracle查看执行最慢与查询次数最多的sql语句> 前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率 ...
- 金蝶k/3 K3云之家消息查询发送是否成功SQL语句
金蝶k/3 K3云之家消息查询发送是否成功SQL语句 1是成功,0是还在轮询中未发送,4是发送失败 select * into #tempUserID from ( union select t_Gr ...
- centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复
centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复 有时候我们会碰到这样的业务场景: 1.将大的数据库恢复到本地进行业务测试 ...
- SQL语句往Oracle数据库中插入日期型数据(to_date的用法)
Oracle 在操作数据库上相比于其他的 T-sql 有微小的差别,但是在插入时间类型的数据是必须要注意他的 to_date 方法,具体的情况如下: --SQL语句往Oracle数据库中插入日期型数据 ...
- 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction
今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...
随机推荐
- C++菱形继承的构造函数
网上搜了很多,大多是关于菱形虚继承的构造函数应该怎么写,或者就是最简单的,四个类都不带参数的构造函数. 本文旨在记录一下困扰了博主1h的问题,非常浅显,有帮助固然好,如果侮辱谁的智商还见谅,当然无限欢 ...
- overflow:hidden
原来以为overflow:hidden能隐藏所有溢出的子元素,但今天发现我错了. 对于overflow:hidden的最大误解时:当一个具有高度和宽度中至少一项的容器应用了overflow:hidde ...
- NFinal简介
NFinalWeb框架是基于魔法糖语法思想创建的框架.本框架有两大特点.1.所有框架里最简单易学易配置的.2.所有框架里运行效率最快的. 相关介绍1.运行效率比任何php和java以及.net框架要快 ...
- Webfrom基础知识
MyBeNASP.NET内置对象 (1)简述ASP.NET内置对象. 答:ASP.NET提供了内置对象有Page.Request.Response.Application.Session.Server ...
- 关于Ajax技术中servlet末尾的输出流
Ajax的服务器端用PrintWriter out=resp.getWriter()来响应数据的时候,out.print(0).out.print(1)来表示成功或失败,而不用out.write是有原 ...
- (转) C/C++中结构体(struct)知识点强化
本文转载于 http://pcedu.pconline.com.cn/empolder/gj/c/0503/567942_all.html#content_page_1 所有程序经过本人验证,部分程序 ...
- CDZSC_2015寒假新人(1)——基础 i
Description “Point, point, life of student!” This is a ballad(歌谣)well known in colleges, and you mus ...
- Python中的Copy和Deepcopy
一,Python的对象: Python存在大量的对象,我们一般提到的对象都是C中的结构体在堆中申请的一块内存(以CPython为例),每一个对象都有ID,可以通过ID(Object)获得.对象的范围包 ...
- Object-c学习之路十(NSNumber&NSValue)
// // main.m // NSNumberAndNSValue // // Created by WildCat on 13-7-26. // Copyright (c) 2013年 wildc ...
- 整理SQL
由4张简单的不能再简单的表,演变出50道SQL 表结构: 表Student (S#,Sname,Sage,Ssex) 学生表 S# student_no Sage student_age Ss ...