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下新建一个 ...
随机推荐
- D. Book of Evil
D. Book of Evil time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- super和this区别
* super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法. 4.super和this的异同: 1)super(参数):调用基类中的某一 ...
- 使用Enitity Framework实现增删改查服务中的一些通用思路
添加 → 方法参数中有一个有关添加视图模型类型的形参,比如vm→ 根据vm的某个属性,比如Name判断在上下文中是否存在,如果不存在就抛EntityNotFoundException异常→ 判断vm所 ...
- Java web实时进度条整个系统共用(如java上传进度条、导入excel进度条等)
先上图: 这上文件上传的: 这是数据实时处理的: 1:先说说什么是进度条:进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,显示方式 ...
- eclipse、myeclipse,svn插件subclipse 忘记密码的解决方法(win7、win8、xp)
如果是Windows7.Windows8系统只要删除当前用户目录下的AppData\Roaming\Subversion\auth\svn.simple 比如我的用户名taoweiji,就删除C:\U ...
- [Aaronyang] 写给自己的WPF4.5 笔记23 [3d交互与动画 4/4]
效果图预览: 1. 3d中的命中测试 我新建了一个空的窗口,用zam做了一个长方体,深度很小.然后导出xaml <Viewport3D x:Name="ZAM3DViewport3D& ...
- Gradle中ProGuard的配置
好久没有写博客了…元旦前赶紧写一篇吧… 这些日子琢磨了一下gradle.对比起maven确实在配置上灵活很多,对groovy的支持可以更容易的自定义任务. 由于最近的几个项目中都使用到了moco这个开 ...
- Codeforces Round #384 (Div. 2)D - Chloe and pleasant prizes 树形dp
D - Chloe and pleasant prizes 链接 http://codeforces.com/contest/743/problem/D 题面 Generous sponsors of ...
- 新安装的VS的一些设置
古语云:工欲善其事必先利其器 为了方便我们开发,应该设置好VS的一些配置,安装一些辅助插件 1 设置字体和背景等 设置字体为 console 10大小 背景设为护眼颜色 85 90 205 这三个值 ...
- c++中typename和class的区别介绍
"typename"是一个C++程序设计语言中的关键字.相当用于泛型编程时是另一术语"class"的同义词.这个关键字用于指出模板声明(或定义)中的非独立名称( ...