在EF中使用原生SQL,首先要创建上下文对象

using (var db = new Entities())
{
//数据操作
}

新增

string sql = "insert into UserInfo values('zhangsan','123456')";
db.Database.ExecuteSqlCommand(sql);

参数化新增

    sql = "insert into UserInfo values(@UserName,@UserPass)";
var param = new SqlParameter[]
{
new SqlParameter("@UserName","lisi"),
new SqlParameter("@UserPass","")
};
db.Database.ExecuteSqlCommand(sql, param);

删除

    sql = "delete from UserInfo where UserName='zhangsan'";
db.Database.ExecuteSqlCommand(sql);

参数化删除

    sql = "delete from UserInfo where UserName=@UserName";
db.Database.ExecuteSqlCommand(sql, new SqlParameter("@UserName", "lisi"));

修改

    sql = "update UserInfo set UserName='wangwu'";
db.Database.ExecuteSqlCommand(sql);

查询多条记录

    sql = "select * from UserInfo";
var users = db.Database.SqlQuery<UserInfo>(sql);
foreach (var user in users)
{
ObjectDumper.Write(user);//打印对象
}

总结:操作方式与ADO.NET类似,EF框架自动为我们封装了数据库链接和查询对象。

完整案例:

//1.创建上下文对象
using (var db = new Entities())
{
//增
string sql = "insert into UserInfo values('zhangsan','123456')";
db.Database.ExecuteSqlCommand(sql); //参数化新增
sql = "insert into UserInfo values(@UserName,@UserPass)";
var param = new SqlParameter[]
{
new SqlParameter("@UserName","lisi"),
new SqlParameter("@UserPass","")
};
db.Database.ExecuteSqlCommand(sql, param); //删
sql = "delete from UserInfo where UserName='zhangsan'";
db.Database.ExecuteSqlCommand(sql); //参数化删除
sql = "delete from UserInfo where UserName=@UserName";
db.Database.ExecuteSqlCommand(sql, new SqlParameter("@UserName", "lisi")); //改
sql = "update UserInfo set UserName='wangwu'";
db.Database.ExecuteSqlCommand(sql); //原生sql查询
sql = "select * from UserInfo";
var users = db.Database.SqlQuery<UserInfo>(sql);
foreach (var user in users)
{
ObjectDumper.Write(user);//打印对象
}
}

【EF学习笔记03】----------使用原生Sql语句的更多相关文章

  1. entityframework学习笔记--009-使用原生sql语句操作数据

    1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: public class Pay ...

  2. power desinger 学习笔记三<批量执行sql语句>

    使用sql脚本导入表结构,直接 附带表的 约束.列的注释.真的可以哦 sql语句如下: create table test01 (   ID                   VARCHAR2(10 ...

  3. EF学习笔记(十二):EF高级应用场景

    学习总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上篇链接:EF学习笔记(十一):实施继承 本篇原文链接:Advanced Entity Framework Scenari ...

  4. EF学习笔记(十) 处理并发

    总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(九):异步处理和存储过程 本篇原文链接:Handling Concurrency Concurrency ...

  5. EF学习笔记(十一):实施继承

    学习总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上篇链接:EF学习笔记(十) 处理并发 本篇原文链接:Implementing Inheritance 面向对象的世界里, ...

  6. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  7. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

  8. EF学习笔记(九):异步处理和存储过程

    总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(八):更新关联数据 本篇原文:Async and Stored Procedures 为何要采用异步? ...

  9. EF学习笔记(八):更新关联数据

    学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考 ...

随机推荐

  1. Redis 发布/订阅机制原理分析

    Redis 通过 PUBLISH. SUBSCRIBE 和 PSUBSCRIBE 等命令实现发布和订阅功能.   这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播.实时 ...

  2. repo安装

    repo是使用python开发的一个用于多版本管理的工具,可以和git协作,简化git的多版本管理. repo安装: 1.新建~/bin,并将此目录包含在path变量中(如果已存在,且已在path变量 ...

  3. Gatling的进阶二

    1. 参数化     Gatling可以很方便使用csv文件进行参数化,例如一个用户信息表:   /* user_information.csv */ username,password,accoun ...

  4. [Flex] ButtonBar系列——垂直布局

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  5. JAVA中的策略模式

    现在我们有一个虚基类-鸭子(abstract Duck). 有真鸭子,野鸭子,橡皮鸭子继承了该类.虚基类有swing方法,毕竟游泳是所有的鸭子都应有的功能.还有一个虚方法display,这个方法在子类 ...

  6. C语言中的atan和atan2(转)

    在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x)  他们返回的值是弧度 要转化为角度再自己处理下. 前者 ...

  7. 临时改GCC编译器,重启后失效

    临时改GCC编译器,重启后失效.例如,用如下命令: export CROSS_COMPILE= <gcc 文件所在的目录>/arm-linux-gnueabihf- 本例中使用的命令如下: ...

  8. Unity小厨房之-----背后视角摄像机

    相信每一个接触过Unity的人,应该都认识Unity引擎自带的那个水管工,也一定知道那个小人模型上挂着3个脚本控制着小人的一切,今天我就来说一下关于Unity背后视角摄像机的实现,当然方法并不唯一,这 ...

  9. 1738 - TWO NODES

    1738 - TWO NODES 时间限制: 10000 MS 内存限制: 65535 KB 问题描述 Suppose that G is an undirected graph, and the v ...

  10. Grunt 插件使用汇总

    最近使用了很多 Grunt 插件,这里把使用 Grunt 中涉及的从开发.代码检查.单元测试.E2E 测试,直到发布所涉及的插件,做一个比较完全的汇总. 环境搭建 1. 创建 Web 前端开发环境 2 ...