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下新建一个 ...
随机推荐
- 【地图API】收货地址详解2
上次讲解的方法是: 在地图中心点添加一个标注,每次拖动地图就获取地图中心点,再把标注的位置设置为地图中心点.可参考教程:http://www.cnblogs.com/milkmap/p/6126424 ...
- SQL Developer 4.0 启动报错“unable to create an instance of the java virtual machine located at path”
安装了Oracle之后,第一件事情就是想想怎么去连接,进而操作.SQL Developer是官方提供的强大工具,个人看来也是第一选择. 目前官网提供的最新版是4.0.1.14.48,下载下来之后,就跃 ...
- ASSIC码对照表
编码对应字符: ✔:\u2714✘:\u2718 <script type="text/javascript"> var aaa = "\u2718" ...
- Code Consultation
Need help architecting or coding your application? You can get technical help with building applicat ...
- Win7版IE10浏览器正式版官方下载地址
• 简体中文,Win7 SP1 32位版IE10下载: http://download.microsoft.com/download/4/1/4/4149BFB1-AC27-401D-943F-DA1 ...
- supervisor监控gearman任务
安装supervisor方法,可以直接用 yum install supervisord ,但是版本可能会旧一点,可以参考官方的方法: easy_install supervisor http://s ...
- JAVA Builder模式构建MAP/LIST的示例
我们在构建一个MAP时,要不停的调用put,有时候看着觉得很麻烦,刚好,看了下builder模式,觉得这思路不错,于是乎,照着用builder模式写了一个构建MAP的示例,代码如下: import j ...
- Android 设置VPN(pptp连接方式)
本教程以小米手机的MIUI系统为例子,教大家如何设置VPN 先找到“设置”,打开设置菜单,如下图: 在设置菜单里面找“其它连接方式” 然后找到“VPN”,点击进入: 进入VPN设置界面后,如果VPN未 ...
- 手机前端页面js
(function () { var phoneWidth = parseInt(window.screen.width); var phoneScale = phoneWidth / 640; va ...
- Windows 2012 安装 .net framework 3.5
使用 PowerShell, 指定源文件路径然后进行安装: Install-WindowsFeature NET-Framework-Core –Source D:\Sources\sxs 使用命令提 ...