C# 在EF中直接运行SQL命令
相信不少使用EF的同志们已经知道如何在EF中运行SQL命令了。我在这里简单总结下,希望对大家学习EF有所帮助! 在 EF第一个版本(.NET 3.5 SP1)中,我们只能通过将ObjectContext.Connection转换为EntityConnection,再把 EntityConnection.StoreConnection转换为SqlConnection。有了这个SqlConnection,我们再创建 SqlCommand便能顺利运行SQL命令了。(个人觉得其实很烦,呵呵) 例如: EntityConnection entityConnection = (EntityConnection)ctx.Connection;
DbConnection storeConnection = entityConnection.StoreConnection;
DbCommand cmd = storeConnection.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "[PRO_USER_DIGITALCARD_CHECK]"; 。。。。。。。 在EF4(.NET )中,我们有了全新的API:ObjectContext.ExecuteStoreCommand(...)和 ObjectContext.ExecuteStoreQuery<T>(...)。从函数名不难知道前者是为了执行某一并无返回集的SQL 命令,例如UPDATE,DELETE操作;后者是执行某一个查询,并可以将返回集转换为某一对象。
using (var ctx = new MyObjectContext())
{
ctx.ExecuteStoreCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1");
}
复制代码
using (var ctx = new MyObjectContext())
{
var peopleViews = ctx.ExecuteStoreQuery<PersonView>("SELECT PersonID, Name FROM Person");
} public class PersonView
{
public int PersonID { get; set; }
public string Name { get; set; }
}
复制代码 现在有了EF4.,API的名字又有了些许改变。如果说DbContext将ObjectContext做了包装,那么DbContext.Database就是对应于数据库端信息的封装。执行SQL命令也自然从Database类型开始。对应于ExecuteStoreCommand和ExecuteStoreQuery<T>的是Database.ExecuteSqlCommand和Database.SqlQuery<T>。
using (var ctx = new MyDbContext())
{
ctx.Database.ExecuteSqlCommand("UPDATE Person SET Name = 'Michael' WHERE PersonID = 1");
}
复制代码 using (var ctx = new MyDbContext())
{
var peopleViews = ctx.SqlQuery<PersonView>("SELECT PersonID, Name FROM Person").ToList();
} public class PersonView
{
public int PersonID { get; set; }
public string Name { get; set; } }
转载:http://www.cnblogs.com/chengxiaohui/articles/2092001.html
C# 在EF中直接运行SQL命令的更多相关文章
- 实用笔记-EF中直接运行SQL命令
在EF4.1,API的名字 有了些许改变,DbContext.Database就是对应于数据库端信息的封装.执行SQL命令也自然从Database类型开始.对应于ExecuteStoreCommand ...
- EF中执行原生sql与使用Local获取本地数据
使用DbSet的Local属性可以访问当前context中被追踪且没有被标记为删除的实体(内存中的数据) using (var context = new BloggingContext()) { / ...
- Access2007中如何运行SQL执行SQl语句
1. 在“创建”选项卡中,单击“其他”组中的“查询设计”. 2. 单击“显示表”对话框中的“关闭”,而不添加任何表或查询. 3. 在“设计”选项卡中,单击“查询类型”工作组中的“联合”. 4. 单击“ ...
- SQL service 中的 ”输入SQL命令窗口“ 打开了 “属性界面” 回到 ”输入SQL命令窗口“
输入SQL命令窗口点击上面的菜单栏中的 “窗口”
- C#EF中,使用类似于SQL中的% 模糊查询
最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF ...
- cmd中无法运行svn命令
Svn 不是内部或外部命令,也不是可运行的程序 解决方法: 增加“svn安装目录/bin”,例如:C:\Program Files\TortoiseSVN\bin
- 在EF中使用原生SQL,首先要创建上下文对象
using (var db = new Entities()) { //数据操作 } 新增 string sql = "insert into UserInfo values('zhangs ...
- 关于EF中直接执行sql语句的参数化问题
某天 , 在review项目中代码的时候, 发现有哥们直接通过 Database.ExecuteSqlCommand("select * from order_info where com ...
- dedecms:织梦文章如何添加“自定义属性”标签(sql命令行工具)
dede织梦如何添加“自定义属性”标签“症状” 1.进入后台——系统——SQL命令行工具——运行SQL命令行,添加arcatt表字段: insert into`dede_arcatt`(sortid, ...
随机推荐
- slack机器人运维
这里有一篇文章,够详细了:http://colobu.com/2015/11/04/create-a-slack-bot-with-golang/ 另外:这个py的库,test了一下,挺好使:http ...
- 利用canvas绘制序列帧动画
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- make -C M=
http://blog.sina.com.cn/s/blog_89fa41ef0100trjr.html Makefile:PWD = $(shell pwd)KERNEL_SRC = /usr/sr ...
- Linux LVM 总结
LVM全称是Logical Volume Manager. 它主要是实现硬盘容量的动态扩展. 一般用于存储数据量无法预估的场景, 例如Linux的根目录用lvm存储. LVM创建过程一般是这样的 1. ...
- 关于centos安装后一些命令找不到
刚才遇到那么尴尬的一个情况,输入啥命令都没找到.连ifconfig都不放过. 后分析极可能是以下两种缘故: 1.缺少安装包 [root@Tzhost-170802-FCF0 /]# yum searc ...
- C语言 · 递归求二项式系数值
算法训练 6-1 递归求二项式系数值 时间限制:10.0s 内存限制:256.0MB 问题描述 样例输入 一个满足题目要求的输入范例.3 10 样例输出 与上面的样例输入对应的输出. ...
- C语言 · 求最大公约数
算法提高 求最大公约数 时间限制:1.0s 内存限制:512.0MB 编写一函数gcd,求两个正整数的最大公约数. 样例输入: 5 15样例输出:5 样例输入: 7 2样例输出:1 ...
- 用apt爽还是apt-get爽
debian系linux发行版的高级软件包管理工具叫apt(for Advanced Package Tool) . debian的包管理体系很立体,dpkg -> apt ->aptit ...
- Putty远程SSH免密码方式链接Linxu
1.首先确保Linxu服务器安装了ssh服务,可以输入ssh命令测试. ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spe ...
- 区块链blockchina简述
区块链是比特币的底层技术和基础架构,本质上是一个去中心化的数据库.区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)并生成下一个 ...