Entity Framework访问MySQL数据库的存储过程并获取返回值
一.创建MySql存储过程
1,

CREATE PROCEDURE `InsertAlarmInfo`(in businessindex int, in providerindex int, in alarmtype int,
in alarmlevel int,in detecttime DateTime, in alarmdescription varchar(50), in alarmphenomenon int, in subBusinessType int,
in businessEntityIndex varchar(50), in taskIndex varchar(50), in eventIndex varchar(50))
BEGIN
declare entityIndex varchar(50);
if detecttime is null then set detecttime=now(); END IF;
INSERT INTO M_ALARM (BUSINESSINDEX, PROVIDERINDEX, ALARMTYPE, ALARMLEVEL, DETECTTIME, ALARMDESCRIPTION, HANDLESTATUS, ALARMPHENOMENON, ENTITYTYPE)
VALUES (businessindex,providerindex, alarmtype, alarmlevel, detecttime, alarmdescription, 3, alarmphenomenon, subBusinessType);
set entityIndex =concat('A_CN',right(concat('00000000',CURRVAL('ENTITY_SEQ')),8));
SET SQL_SAFE_UPDATES = 0;
if businessEntityIndex is not null then
INSERT INTO M_CONFIGITEMRELATION (SOURCEINDEX, TARGETINDEX, RELATIONTYPE, GROUPTYPE)
VALUES (entityIndex,businessEntityIndex, 3, 1); END IF;
if taskIndex is not null then
INSERT INTO M_CONFIGITEMRELATION (SOURCEINDEX, TARGETINDEX, RELATIONTYPE, GROUPTYPE)
VALUES (entityIndex, taskIndex, 3, 5);
END IF;
if eventIndex is not null then
INSERT INTO M_CONFIGITEMRELATION (SOURCEINDEX, TARGETINDEX, RELATIONTYPE, GROUPTYPE)
VALUES (entityIndex,eventIndex, 3, 14);
UPDATE M_EVENT SET DEALTYPE = 1 WHERE EVENTINDEX = eventIndex ; END IF;
UPDATE M_BUSINESSENTITYEXTEND SET CURRENTSTATUS = 2 WHERE ENTITYINDEX = businessEntityIndex and ENTITYTYPE = subBusinessType;
SET SQL_SAFE_UPDATES = 1;
select entityIndex;//这里用于返回EF获取的数据
END

2,1(这个存储过程调用函数)

CREATE PROCEDURE `InsertWorkOrderInfo`(in personindex INTEGER, in businessindex INTEGER,in systemstatus INTEGER,in providerindex INTEGER,
in alarmindex VARCHAR(100),in orderlevel INTEGER, in exceptfixtime INTEGER,in fixperson INTEGER, in currentstatus INTEGER,
in orderhandle VARCHAR(100),in handletype INTEGER)
BEGIN
select InsertWorkOrderInfo(personindex,businessindex,systemstatus,
providerindex,alarmindex,orderlevel,exceptfixtime,fixperson,currentstatus,orderhandle,handletype); END

2,2(定义函数)

CREATE FUNCTION `InsertWorkOrderInfo`(personindex INTEGER, businessindex INTEGER, systemstatus INTEGER, providerindex INTEGER,
alarmindex VARCHAR(100), orderlevel INTEGER, exceptfixtime INTEGER, fixperson INTEGER, currentstatus INTEGER,
orderhandle VARCHAR(100), handletype INTEGER) RETURNS varchar(100) CHARSET utf8
BEGIN
declare issmsnotify INTEGER;
declare isweixinnotify INTEGER;
declare createTime DATETIME;
declare cTime DATETIME;
set issmsnotify=0;
set isweixinnotify=0;
set cTime=now();
set createTime=now();
INSERT INTO M_WORKORDER (BUSINESSINDEX, SYSTEMSTATUS, PROVIDERINDEX, ALARMINDEX, ORDERLEVEL, EXCEPTFIXTIME, FIXPERSON, CURRENTSTATUS, ISSMSNOTIFY, ISWEIXINNOTIFY, CREATETIME, ORDERHANDLE, HANDLETYPE)
VALUES (businessindex, systemstatus, providerindex, alarmindex, orderlevel, exceptfixtime, fixperson,currentstatus, issmsnotify,isweixinnotify, cTime, orderhandle, handletype); INSERT INTO M_ORDERHANDLE (ORDERINDEX, HANDLESTATUS, HANDLETIME, HANDLEPERSON, HANDLEDESCRIPTION, HANDLETYPE)
VALUES (concat('S_CN',right(concat('00000000',CURRVAL('ENTITY_SEQ')),8)), currentstatus, cTime,personindex, orderhandle, handletype); RETURN concat('S_CN',right(concat('00000000',CURRVAL('ENTITY_SEQ')),8));
END

二 EF调用

public ActionResult EditWorkOrder(FormCollection collection)
{
AppLog.Info("EditWorkOrder");
try
{
string openID = Session["OpenID"].ToString();
AppLog.Info("添加派工单时的openid:" + openID );
int personindex =DBAccess.Bussiness.GetStaffIndex(openID);
int businessindex =Convert.ToInt32(Session["PROVIDERINDEX_BUSINESSINDEX"].ToString().Split('/')[1]);//道路...index
int systemstatus = 0;
int providerindex = Convert.ToInt32(collection["ProviderList"]);//维护单位
string alarmindex = Session["Alarmindex"].ToString();//报警编号有上文提供
int orderlevel = Convert.ToInt32(collection["WorkOrderLevel"]);//优先级别
int fixperson = Convert.ToInt32(collection["RepairUserList"]);//维修人员
string currentstatus = Convert.ToString(collection["WorkOrderStatusList"]);//新增
string orderhandle =string.Empty;
if(collection["OrderHandle"]!=null)
{
orderhandle = collection["OrderHandle"];//故障分类处理描述
}
string handletype = Convert.ToString(collection["AlarmHandleTypeList"]);//故障处理分类
AppLog.Info("派工单参数信息:" + "--personindex:"+personindex+ "--businessindex:"+businessindex+ "--providerindex:"+providerindex+ "--alarmindex:"+alarmindex+ "--orderlevel:"+orderlevel+ "--fixperson:"+fixperson+ "--currentstatus:"+currentstatus+"--orderhandle:"+orderhandle+"--handletype:"+handletype);
MySqlParameter[] prams = new MySqlParameter[11];
prams[0] = new MySqlParameter("@personindex", personindex);
prams[1] = new MySqlParameter("@businessindex", businessindex);
prams[2] = new MySqlParameter("@systemstatus", systemstatus);
prams[3] = new MySqlParameter("@providerindex", providerindex);
prams[4] = new MySqlParameter("@alarmindex", alarmindex);
prams[5] = new MySqlParameter("@orderlevel", orderlevel);
prams[6] = new MySqlParameter("@exceptfixtime", 24);
prams[7] = new MySqlParameter("@fixperson", fixperson);
prams[8] = new MySqlParameter("@currentstatus", currentstatus);
prams[9] = new MySqlParameter("@orderhandle", orderhandle);
prams[10] = new MySqlParameter("@handletype", handletype);
using (cnpsim_dbEntities dbManager = new cnpsim_dbEntities())
{
var index = dbManager.Database.SqlQuery<string>("call InsertWorkOrderInfo(@personindex,@businessindex,@systemstatus,@providerindex ,@alarmindex, @orderlevel,@exceptfixtime, @fixperson,@currentstatus ,@orderhandle,@handletype)", prams);
string ss=index.FirstOrDefault().ToString();
string s = ss; return RedirectToAction("SuccessInfo", "BackInfo", new { str1 = "成功添加派工单", str2 = "", url = "http://wx115.cnpsim.com/Business/index" }); }
}
catch(Exception ex)
{
return null;
}
}

Entity Framework访问MySQL数据库的存储过程并获取返回值的更多相关文章
- Entity Framework连接Mysql数据库并生成Model和DAL层
Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...
- Yii2.0调用sql server存储过程并获取返回值
1.首先展示创建sql server存储过程的语句,创建一个简单的存储过程,测试用. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE P ...
- 让Entity Framework支持MySql数据库(转载)
转载地址:http://www.cnblogs.com/wintersun/archive/2010/12/12/1903861.html Entity Framework 4.0 也可以支持大名鼎鼎 ...
- C#访问MySQL数据库(winform+EF)
原文:C#访问MySQL数据库(winform+EF) 以前都是C#连接SQLServer,现在MySQL也比较火了,而且是开源跨平台的,这里连接使用一下,主要是体会一下整个流程,这里使用的是winf ...
- C#连接、访问MySQL数据库
一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...
- Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...
- 让ADO.NET Entity Framework支持Oracle数据库
Oracle最近发布了 Oracle Data Access Component(ODAC)11. 2 Rel 4,其中增加了对 Entity Framework 4.1 和4.2的支持.这让 .NE ...
- MySQL数据库之存储过程与存储函数
1 引言 存储过程和存储函数类似于面向对象程序设计语言中的方法,可以简化代码,提高代码的重用性.本文主要介绍如何创建存储过程和存储函数,以及存储过程与函数的使用.修改.删除等操作. 2 存储过程与存储 ...
- android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?
通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...
随机推荐
- paip.python3 的类使用跟python2 的不同之处
paip.python3 的类使用跟python2 的不同之处 #------python3的写法而且使用.. #class syllable(BaseClassA, BaseClassB): cla ...
- paip.提升效率---提升绑定层次--form绑定取代field绑定
paip.提升效率---提升绑定层次--form绑定取代field绑定 =================== 编辑form中,常常需要,绑定一个对象到个form.. 传统上要绑定field开始. ...
- 使用socket.io开发简单群聊功能
1.新建package.json文件: { "name": "socket-chat-example", "version": " ...
- java防止脚本注入,通过拦截器实现
1:利用action过滤 package com.tsou.comm.servlet; import java.util.Enumeration; import java.util.Map; impo ...
- 解决stackoverflow打开慢不能注册登录
http://blog.csdn.net/dream_an/article/details/50280977 解决stackoverflow打开慢不能注册登录 标签: stack overflowfi ...
- 通过boundingRectWithSize:options:attributes:context:计算文本尺寸
转:http://blog.csdn.net/iunion/article/details/12185077 之前用Text Kit写Reader的时候,在分页时要计算一段文本的尺寸大小,之前使用 ...
- [GO编程]GO编程环境
GO是一个开源项目,由Google大神发明的,他主要是用于应用程序级开放,可以编译成机器码,和C++一样不需要.NET或JAVA那样的运行框架,因此是个不错的编程语言.更何况发明者都是高手中的高手,而 ...
- MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理
1:数据同步的原理: 当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳. 2:检查Primary ...
- callable object与新增的function相关 C++11中万能的可调用类型声明std::function<...>
在c++11中,一个callable object(可调用对象)可以是函数指针.lambda表达式.重载()的某类对象.bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function ...
- Three levels at which any machine carrying out an Information-Processing task must be understood
1. Computational theory What is the goal of computation, why is it appropriate, and what is the logi ...