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 ...
随机推荐
- extjs 4.2 日期控件 选择时分秒功能
因为不支持时分秒,然后在网上也找了一段时间的插件,但是感觉起来都不大方便,最后找一个插件,只需要引用js文件,然后修改类型,就可以实现extjs下面的datafield带时分秒功能了. 步骤: 只需要 ...
- ligerui+json_002_Grid用法、属性总结
原文更全面,地址: http://blog.csdn.net/dxnn520/article/details/8216560 // ================================== ...
- paper 93:OpenCV学习笔记大集锦
整理了我所了解的有关OpenCV的学习笔记.原理分析.使用例程等相关的博文.排序不分先后,随机整理的.如果有好的资源,也欢迎介绍和分享. 1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址: ...
- gulpfile.js
文件目录如上: 下载代码地址:https://github.com/lianbinghua/gulptest 切换目录:cd gulp 安装依赖包:npm install 编译文件:gulp或者gul ...
- oracle文件版本
strings -a $AU_TOP/forms/US/GLXFCRVL.fmb|grep '$Header' 比如 strings -a /u02/CRP2/apps/apps_st/appl/a ...
- [slim] Slim - Faster, lightweight, a enginer for Ruby
URL: http://slim-lang.com/ Example: doctype html html head title Slim Examples meta name="keywo ...
- SVN使用(一)
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- 匹配表单中所有的子级input元素。
HTML 代码: <form> <label>Name:</label> <input name="name" /> <fie ...
- MySQL OnlineDDL
参考资料: http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html http://www.mysqlperfo ...
- 那些情况该使用它们spin_lock到spin_lock_irqsave【转】
转自:http://blog.csdn.net/wesleyluo/article/details/8807919 权声明:本文为博主原创文章,未经博主允许不得转载. Spinlock的目的是用来同步 ...