如何用VS EF连接 Mysql,以及执行SQL语句 和存储过程?
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://stackoverflow.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语句 和存储过程?的更多相关文章
- JDBC连接MYSQL,批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句
conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("trunca ...
- Python连接MySQL数据库执行sql语句时的参数问题
由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...
- MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause
MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...
- EF Core 执行SQL语句和存储过程
无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...
- Entity Framework Core 执行SQL语句和存储过程
无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(89)-EF执行SQL语句与存储过程
这一节,我们来看看EF如何执行SQL语句与读取存储过程的数据,可能有一部分人,还不知道EF如何执行存储过程与原生SQL语句! 我们什么时候要直接使用原生的SQL语句? 返回值过于复杂 过于复杂的联合查 ...
- Entity Framework 在MySQL中执行SQL语句,关于参数问题
在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...
- MySQL学习系列一---命令行连接mysql和执行sql文件
1.命令行连接mysql #mysql -h(主机) -u(用户名) -p (数据库名) mysql -hlocalhost -uroot -p testdb Enter password: **** ...
- (转载)MySQL中执行sql语句反斜杠需要进行转义否则会被吃掉
(转载)http://www.phpcode8.com/lamp/mysql-lamp/mysql-escape-slash.html 最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是 ...
随机推荐
- Java课程设计—学生成绩管理系统(201521123002 林楚虹)
1. 团队课程设计博客链接 团队博客链接 2.个人责模块或任务说明 根据学生学号查找学生成绩 根据学生姓名(支持模糊匹配)查找学生成绩 用POI技术导出Excel文件 3.自己的代码提交记录截图 4. ...
- java第十二次作业
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- 201521123020 《Java程序设计》第9周学习总结
1.本周学习总结 2. 书面作业 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 答:数组越界:不需要 ...
- hadoop-2.6.0源码编译问题汇总
在上一篇文章中,介绍了hadoop-2.6.0源码编译的一般流程,因个人计算机环境的不同, 编译过程中难免会出现一些错误,下面是我编译过程中遇到的错误. 列举出来并附上我解决此错误的方法,希望对大家有 ...
- Python学习笔记008_类_对象_继承_组合_类相关的BIF
# 对象 = 属性 + 方法>>> # Python中的类名约定以大写字母开始>>> # tt = Turtle() 这就是创建类实例的方法,其它语言用new ,它 ...
- [python学习笔记] 开篇
今天开始学习markdown,立贴为证. 平均一天一小时.两个月先学完基础. 所有的帖子只为了学习记录,有不对的请提出,轻吐槽
- JAVA多线程--Thinking in java
聊聊并发:http://ifeve.com/java-concurrency-thread-directory/ 阻塞状态: sleep 可中断利用 interrupt方法 wait IO 不可中 ...
- jmeter3.3测试需要登录的接口(java)
1.新建线程组-略过 2.右键线程组->添加->配置元件->HTTP授权管理器 3.右键线程组->添加->配置元件->HTTP信息头管理器 4.右键线程组-> ...
- 移动端touch事件实现页面弹动--小插件
动手之前的打盹 说实话真的是好久没有更新博客了,最近一直赶项目,身心疲惫:最关键的是晚上还要回去上一波王者,实在是忙啊! 这周下来,清闲了些许,或许是因为要到国庆的缘故吧,大家都显得无精打采.俗话说的 ...
- 剑指offer(纪念版)读书笔记【实时更新】
C++ 1.STL的vector每次扩充容量,新容量是前一次的两倍. 2.32位机指针大小为4个字节,64位机指针大小为8个字节. 3.当数组作为函数参数传递时,数组会自动退化成同类型指针. 4. & ...