如何用VS EF连接 Mysql,以及执行SQL语句 和存储过程?

时间:2022-08-03 23:25:46

VS2013, MySQL5.7.18 , MySQL5.7.14

执行SQL语句:

ztp_user z = new ztp_user();

object[] obj = new object[] { z };

MySqlParameter[] p = new MySqlParameter[]{

new MySqlParameter("@username","admin1")

};

var result = db.Database.SqlQuery<ztp_user>("SELECT * from ztp_user  where username=@username LIMIT 10", p).ToList();

执行存储过程:

DateTime beginDateTime = Convert.ToDateTime("2017-10-21");

DateTime endDateTime = Convert.ToDateTime("2017-10-22");

int beginTimeStamp = 1508515200;

int endTimeStamp = 1508601600;

var result = db.sp_BI(beginDateTime, endDateTime, beginTimeStamp, endTimeStamp).ToList();

http://www.360doc.com/content/14/0709/00/5054188_393081769.shtml

使用过程中遇到的坑:

线上的数据库需要新写一个存储过程,不能在线上直接操作,需要从线上导出一个数据库,最新的数据

坑一:导出的sql文件,需要导入的时候报错,总提示语法错误

原因是线上的MySQL版本和本地的版本不一致

解决方案:

.MySQL导入数据从5.7.18 高版本导入到低版本数据5.7.14时候提示语法错误:

需要将双引号替换成单引号

CREATE TABLE "ztp_admin_nav" (

双引号替换成单引号

坑二:安装了VS后还不能直接连接使用MySQL,需要安装插件

解决方案:

1、mysql-for-visualstudio:Mysql的Visual Studio插件,推荐1.2.3版本

2、mysql-connector-net:.net连接Mysql的程序,推荐6.8.3,版本。如果安装高版本可能导致一系列问题。详见:http://blog.csdn.net/niewq/article/details/41877301。

http://www.cnblogs.com/wangwust/p/6638666.html

坑三:插件也安装好了,使用 EF,DB first的时候,生成Model的时候又报错了

StrongTypingException: The value for column 'IsPrimaryKey' in table 'TableDetails' is DBNull.'.

解决方案:

1.重启mysql 服务

2.set global optimizer_switch='derived_merge=OFF';

EF连接mysql的时候:

1.重启mysql服务

use <<database name>>

2.   set global optimizer_switch='derived_merge=OFF';

3.添加EF ADO.NET ENTITY

Unexpected exception occurred when generating the model. See output window for more details. Exception message : 'StrongTypingException: The value for column 'IsPrimaryKey' in table 'TableDetails' is DBNull.'.

https://*.com/questions/31961646/ef6-mysql-strongtypingexception-when-column-is-not-pk

坑四:发现在MySQL中执行这个命令的时候又报错了,无法设置 Global derived-merge

出现 1055 sql group by order by 错误1055 错误

解决方案:

修改 sql model 避免 group by 错误  Group by 出错:

推荐新的修改方法:

按需修改

select @@global.sql_mode;

set @@global.sql_mode ='REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE';

重启mysql

老的修改方法:

select @@global.sql_mode;

set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

坑五:正常情况,修改MySQL 的sql model后,group by的问题就可以解决了

但是这次还不行,执行 set global optimizer_switch='derived_merge=OFF'; 依然报1055错

Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'inform:

解决方案:

1.修改my.cnf 最后一行添加 sql_mode='NO_ENGINE_SUBSTITUTION'

http://www.cnblogs.com/gaojupeng/p/5740011.html

windows上面是my.ini

linux上面是 my.cnf

2.重启mysql

坑六:EF终于可以添加上model了,但是写代码的时候报错,找不到命名空间

解决方案:

C#连接MySQL缺少引用命名空间:

引入MySQL.Data.dll

http://blog.csdn.net/zzzzzzzert/article/details/7925497

坑七:

代码终于写完,调试也可以了,写完发布到服务器上面,又报错了,本地可以,服务器不行,这个就更坑了,开启web config 报错提示 customer error model =“OFF”,看到了报错信息

报错:Facet 'Precision' must not be specified for type 'datetime'.

是因为存储过程中使用了 timestamp 类型的参数

本地5.7.14 可以EF可以连接存储过程成功,发布后MySQL使用5.7.18版本不兼容数据类型

解决方案:

存储过程的数据类型,从timestamp 改成了 varchar(50),传参数‘2017-10-25’

再次发布使用EF可以成功连接MySQL

终于线上可以用了,调用MySQL存储过程,调用sql语句

如何用VS EF连接 Mysql,以及执行SQL语句 和存储过程?的更多相关文章

  1. JDBC连接MYSQL&comma;批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句

    conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("trunca ...

  2. Python连接MySQL数据库执行sql语句时的参数问题

    由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...

  3. MySQL中执行sql语句错误 Error Code&colon; 1093&period; You can&&num;39&semi;t specify target table &&num;39&semi;car&&num;39&semi; for update in FROM clause

    MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...

  4. EF Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  5. Entity Framework Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  6. ASP&period;NET MVC5&plus;EF6&plus;EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程

    这一节,我们来看看EF如何执行SQL语句与读取存储过程的数据,可能有一部分人,还不知道EF如何执行存储过程与原生SQL语句! 我们什么时候要直接使用原生的SQL语句? 返回值过于复杂 过于复杂的联合查 ...

  7. Entity Framework 在MySQL中执行SQL语句&comma;关于参数问题

    在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...

  8. MySQL学习系列一---命令行连接mysql和执行sql文件

    1.命令行连接mysql #mysql -h(主机) -u(用户名) -p (数据库名) mysql -hlocalhost -uroot -p testdb Enter password: **** ...

  9. (转载)MySQL中执行sql语句反斜杠需要进行转义否则会被吃掉

    (转载)http://www.phpcode8.com/lamp/mysql-lamp/mysql-escape-slash.html 最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是 ...

随机推荐

  1. 【精心推荐】几款实用的 JavaScript 图形图表库

    一款好的图表插件不是那么容易找到的.最近项目里需要实现统计图表功能,所以在网上搜罗了一圈,找到一些不错的图表插件,分享大家.众多周知,图形和图表要比文本更具表现力和说服力.这里给大家精心推荐几款实用的 ...

  2. li标签之间的空隙问题(转)

    原文地址:http://www.cnblogs.com/laogao/archive/2012/08/13/2636419.html css li 空隙问题   IE6/7的Bug:纵向排列的li中加 ...

  3. opencv提取截获图像(总结摘来)

    opencv提取截获图像(总结摘来) http://blog.csdn.net/wuxiaoyao12/article/details/7305865 版权声明:本文为博主原创文章,未经博主允许不得转 ...

  4. C&num; Excel写入

    基本思路,就是using Microsoft.Office.Interop.Excel;然后启动excel来处理 创建excel文件,代码如下: if (File.Exists(path)) { re ...

  5. 读书时间《JavaScript高级程序设计》七:表单

    在HTML中表单是有<form>元素表示,在JS中表单对应的是HTMLFormElement类型. 表单自有的属性和方法: 获取表单 1. 通过ID  document.getElemen ...

  6. &lbrack;Unity3D&rsqb;Unity3D游戏开发之Unity与Android交互调用研究

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.在前一篇文章中,我们研究了Android平台上Unity3D的手势操作并在之前的基础 ...

  7. Objective-C 2&period;0属性&lpar;Property&rpar;介绍

    通常在声明一些成员变量时会看到如下声明方式: @property (参数1,参数2) 类型 名字: 这里我们主要分析在括号中放入的参数,主要有以下三种: setter/getter方法(assign/ ...

  8. Android音视频之AudioRecord录音&lpar;一&rpar;

    在音视频开发中,录音当然是必不可少的.首先我们要学会单独的录音功能,当然这里说的录音是指用AudioRecord来录音,读取录音原始数据,读到的就是所谓的PCM数据.对于录音来说,最重要的几个参数要搞 ...

  9. mysql学习--1&period;事务

    转载自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/3984001.html 四.事务的四大特性(ACID) 4.1.原子性(Atomicity) 原子性是指事务 ...

  10. 第八天py

    我发现这个老师讲的太基础只是我懒得跳过而已想慢慢听 列表公共功能 索引 切片 for 长度 特有功能 翻转 排序 追加 插入 索引位置 删除