Entity Framework——执行sql语句
EF版本:6.0.0
EF对大量数据或多表连接一次操作耗时较大,或要求响应时间尽可能小,因此采用EF框架执行SQL语句的方案
1DbContext.Database
这个类包含了大量的操作方法,见截图:

查询方法举例:
using (CustomDbContext db = new CustomDbContext())
{
string sql = "SELECT * FROM collections LEFT JOIN collectionusers ON collections.`Id`=collectionusers.`Collection_Id`";
var task = db.Database.SqlQuery<Collection>(sql).ToListAsync();
task.Wait();
var r = task.Result;
}
删除方法举例:
using (CustomDbContext db = new CustomDbContext())
{
string sql = "delete from collectionusers where Id=@id";
var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@id", ));
}
注意操作Mysql数据库,一定要是有MySqlParameter而不能使用SqlParameter,使用SqlParameter会抛出异常:Only MySqlParameter objects may be stored
更新方法举例:
using (CustomDbContext db = new CustomDbContext())
{
string sql = "update collectionusers set InsertTime=@time where Id=@id";
var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@time", DateTime.Now),new MySqlParameter("@id", ));
}
插入方法举例:
using (CustomDbContext db = new CustomDbContext())
{
db.Database.ExecuteSqlCommand("SET SQL_SAFE_UPDATES=0");//不启用更新安全模式
db.Database.ExecuteSqlCommand("SET FOREIGN_KEY_CHECKS=0");//取消外键约束
string sql = "INSERT INTO collectionusers (`InsertTime`, `Collection_Id`, `User_Id`)VALUES(@insertTime,@cid, @uid)";
var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@insertTime", DateTime.Now), new MySqlParameter("@cid", ), new MySqlParameter("@uid",));
}
事务操作举例:
CustomDbContext db = null;
DbContextTransaction tran = null;
try
{
db = new CustomDbContext();
tran = db.Database.BeginTransaction();
db.Database.ExecuteSqlCommand("SET SQL_SAFE_UPDATES=0");//不启用更新安全模式
db.Database.ExecuteSqlCommand("SET FOREIGN_KEY_CHECKS=0");//取消外键约束
string sql = "INSERT INTO collectionusers (`InsertTime`, `Collection_Id`, `User_Id`)VALUES(@insertTime,@cid, @uid)";
var num = db.Database.ExecuteSqlCommand(sql, new MySqlParameter("@insertTime", DateTime.Now), new MySqlParameter("@cid", ), new MySqlParameter("@uid", ));
tran.Commit();
}
catch
{
tran.Rollback();
}
finally
{
if (db != null) db.Dispose();
if (tran != null) tran.Dispose();
}
-----------------------------------------------------------------------------------------
转载与引用请注明出处。
时间仓促,水平有限,如有不当之处,欢迎指正。
Entity Framework——执行sql语句的更多相关文章
- Entity Framework执行Sql语句返回DataTable
Entity Framework中对外开放了数据库连接字符串,使用的时候可以直接得到这个连接字符串,然后进行相关的操作.如果在使用的过程中,发现Entity Framework中有一些满足不了的需求的 ...
- Entity Framework 使用sql语句分页(查询视图)
1.查询视图 //3.查询视图 var sql = @" SELECT D.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY TestView.B_M ...
- Entity Framework 使用sql语句分页(查询单表)
1.查询单表 var pageSize = 2;//条数 var pageIndex = 2;//索引 var sql = @" SELECT D.* FROM ( SELECT ROW_N ...
- Entity Framework Code First执行SQL语句、视图及存储过程
1.Entity Framework Code First查询视图 Entity Framework Code First目前还没有特别针对View操作的方法,但对于可更新的视图,可以采用与Table ...
- Entity Framework Core 执行SQL语句和存储过程
无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...
- Entity Framework 在MySQL中执行SQL语句,关于参数问题
在Entity Framework中添加MySQL模型,在写代码的过程中需要直接执行SQL语句. 在SQL语句中用到了@curRank := 0 这样在SQL语句中定义参数,同时还会有传入参数:ai. ...
- Entity Framework中执行Sql语句
如果想在EF框架中执行Sql语句,其实很简单,EF里面已经提供了相关的方法(此处使用的EF为EF4.1版本). EF中提供了两个方法,一个是执行查询的Sql语句SqlQue ...
- 4.5 .net core下直接执行SQL语句并生成DataTable
.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...
- .net core下直接执行SQL语句并生成DataTable
.net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...
随机推荐
- Tomcat配置连接池的java实现
1.准备 JNDI(Java Naming and Directory Interface),Java命名和目录接口.JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源.我们这 ...
- thinkjs crud练习
今天看了下thinkjs(v2.1.7),做了一个简单的入门demo,基于mysql数据库增删改查,详细源码如下: 页面整体展示: 会员新增: 删除: 查询: 主页面: <!DOCTYPE ht ...
- MongoDB 线上环境按照及配置(授权方式启动)
1创建文件repo文件 #vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository bas ...
- 二:Nexus知识
Nexus访问 Http://localhost:8080/nexus Nexus登陆 用户:admin 密码:admin123 Nexus仓库 nexus的仓库类型分为以下四种: group: 仓库 ...
- 三、Bean的初始化
一.使用构造器实例化Bean:这是最简单的方式,Spring IOC容器既能使用默认空构造器也能使用有参构造器两种方式创建bean 空构造器 <bean name="bean1&quo ...
- 牛顿迭代,多项式求逆,除法,开方,exp,ln,求幂
牛顿迭代 若 \[G(F_0(x))\equiv 0(mod\ x^{2^t})\] 牛顿迭代 \[F(x)\equiv F_0(x)-\frac{G(F_0(x))}{G'(F_0(x))}(mod ...
- webapp 的简单开发
web app 的技术平台很多,如adobe phonegap.sencha touch.appcan(国产).dcloud(国产)平台.我选择了dcloud平台,原因:简单,容易上手. web ap ...
- webpack简单学习的入门教程
前言,如果按照官网的安装办法: npm install webpack -g 安装的是最新版的,然后就莫名其妙的有问题(可以安装,但运行有问题).我是小白,我也不知道具体原因,所以我换成2.5.1版本 ...
- 用 State Pattern 来实现一个简单的 状态机
首先要理解 State Pattern 模式. http://www.dofactory.com/net/state-design-pattern Definition Allow an object ...
- 用C语言指针作为函数返回值
转载:http://c.biancheng.net/cpp/html/3242.html C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlon ...