EF 存储过程
今天我们利用EF执行sql语句的方式来执行存储过程,并得到OutPut的值。
首先新建存储过程:
Create PROCEDURE proc_testEF ( @id int, @voteCount int OUTPUT --返回值 ) AS BEGIN SELECT @voteCount = COUNT(*) FROM ConfirmItem WHERE ConfirmItemID = @id; select * from ConfirmItem where ConfirmItemID=@id; END |
然后写EF调用方法:
using (DBEntities context = new DBEntities()) { var idParam = new System.Data.SqlClient.SqlParameter { ParameterName = "@id", Value = 1 }; var votesParam = new System.Data.SqlClient.SqlParameter { ParameterName = "@voteCount", Value = 0, Direction = ParameterDirection.Output }; var results = context.Database.SqlQuery<Models.ConfirmItem>( "proc_testEF @id, @voteCount out", idParam, votesParam); var person = results.Single(); var votes = (int)votesParam.Value; //得到OutPut类型值 return votes; } |
测试多次,没有什么问题;最后我对方法进行封装:
/// <summary> /// 执行原始SQL命令 /// </summary> /// <param name="commandText">SQL命令</param> /// <param name="parameters">参数</param> /// <returns>影响的记录数</returns> public Object[] ExecuteSqlNonQuery<T>(string commandText, params Object[] parameters){ using (DBEntities context = new DBEntities()) { var results = context.Database.SqlQuery<T>(commandText, parameters); results.Single(); return parameters; }} |
调用方式:
var idParam = new System.Data.SqlClient.SqlParameter { ParameterName = "@id", Value = 1 }; var votesParam = new System.Data.SqlClient.SqlParameter { ParameterName = "@voteCount", Value = 0, Direction = ParameterDirection.Output }; System.Data.SqlClient.SqlParameter[] parm = { idParam, votesParam }; parm = (System.Data.SqlClient.SqlParameter[])new BLL.Usual.ConfirmItemManager().ExecuteSqlNonQuery<Models.ConfirmItem>("proc_testEF @id, @voteCount out", parm); string s = parm[1].Value.ToString(); |
当然还有其它的方式,只是觉得这种简单方便,比起添加实体模型来说,要方便很多!
EF 存储过程的更多相关文章
- EF 存储过程(上)
目前,EF对存储过程的支持并不完善.存在以下问题:> EF不支持存储过程返回多表联合查询的结果集.> EF仅支持返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况.&g ...
- 分页:T-SQL存储过程和EF存储过程的使用
首先准备好分页的T-SQL语句: create proc usp_activityFenYe @pageIndex int, @pageSize int, @pageCount int output ...
- EF 存储过程(下)
本节,我们将学习如何手动添加/修改存储过程,如何使EF能够支持Output类型的参数 > 添加/修改存储过程 有时候,某个SQL语句比较复杂,但是数据库中又没有定义相应的存储过程.这个时候,我们 ...
- ef——存储过程
数据库中存在存储过程GetCategory: ALTER proc [dbo].[GetCategory] @cid int as begin select * from Categories w ...
- 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法
一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand 和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类 ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- EF基本操作增、删、查、改、分页,join……等
一.批量添加数据 static void Main(string[] args) { add(); add2(); Console.ReadKey(); } static void add() { D ...
- Entity Framework 学习中级篇2—存储过程(上)
目前,EF对存储过程的支持并不完善.存在以下问题: l EF不支持存储过程返回多表联合查询的结果集. l EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法 ...
- LINQ TO SQL和Entity Framework 的关系 你了解多少?
1. LINQ TO SQL 和EF 特点: LINQ TO SQL和Entity Framework都是一种包含LINQ功能的ORM 也就是所谓的关系对象的映射.其中包括的有DBFrist ...
随机推荐
- HttpContext.Current 的缺陷
了解ASP.NET的开发人员都知道它有个非常强大的对象 HttpContext,而且为了方便,ASP.NET还为它提供了一个静态属性HttpContext.Current来访问它,今天的博客打算就从H ...
- JS_01_入门学习
01:编写js文件:JavaScript_01.js // JavaScript Document //1.利用JavaScript来输出文字 <script type="text/j ...
- Windows7 IIS7.5 HTTP Error 503 The service is unavailable 另类解决方案
这篇文章是在你看了别的解决方案仍然解决不了之后才有用. 所以再未用别的解决方案之前,用了该解决方案依然无效的话,请自己看着办. 原创: .net2.0和.net3.5的应用程序池请在开始菜单打开VS2 ...
- 四则运算GUI版本
要求:用户界面新增支持 Windows GUI,同时保留原有命令行下所有功能.提示: 先测试驱动开发,然后重构代码,以GUI为目标修改"核心"函数,把与GUI/Console相关的 ...
- web标准
仔细看看所有的前端招聘要求,几乎所有的都要求对web标准有深刻的理解. web标准,是一系列标准的集合.对前端来说,因为网页是由结构.表现和行为组成.对应的就有结构化标准语言,主要包括XHTML和XM ...
- andriod之应用内置浏览器 webview
参考:http://my.eoe.cn/694183/archive/10476.html http://blog.csdn.net/it_ladeng/article/details/8136534 ...
- C#下调用C++ SDK的编码常识
一组编码规范,通过C#调用C++ 自动封装的C# SDK,会发现面向对象思想的重要性. C++ SDK可以使用自动封装工具转换成C# SDK.但需要遵守如下规则: 1.如果需要对C#对象进行判断,则分 ...
- 【转】Web UI自动化测试原理
目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件,模拟用户输入,点击等 ...
- linux curl用法详解
linux curl用法详解 curl的应用方式,一是可以直接通过命令行工具,另一种是利用libcurl库做上层的开发.本篇主要总结一下命令行工具的http相关的应用, 尤其是http下载方面 ...
- Linux下创建与解压tar, tar.gz和tar.bz2文件及压缩率对比 | 沉思小屋
刚 在qq群里面一位仁兄问到文件压缩的命令,平时工作中大多用解压缩命令,要是遇到压缩就现查(这不是一个好习惯),于是整理下Linux下创建与解压 zip.tar.tar.gz和tar.bz2文件及他们 ...