Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在Entity Framework 中执行T-sql语句

在Entity Framework 中执行T-sql语句

作者头像
张善友
发布于 2018-01-22 07:00:33
发布于 2018-01-22 07:00:33
2.5K0
举报
文章被收录于专栏:张善友的专栏张善友的专栏

从Entity Framework  4开始在ObjectContext对象上提供了2个方法可以直接执行SQL语句:ExecuteStoreQuery<T>ExecuteStoreCommand。

1、使用ExecuteStoreQuery<T> :通过sql查询返回object实体,有有许多需要注意:

1.sql = "select * from Payment where Vendor= @vendor";之所以能写成select *是因为Payment对象的属性和表的字段命名完全一致,如果不一致的话,需要将表字段取别名,别名需是对象映射的属性名称。

2.如果sql语句返回的列少于(具体化)实体的属性的个数,那么EF在具体化的时候将抛出一个异常如下图,因此将需要缺少的列补上一些没有意义的值,以保证在具体乎的时候不会报错:eg 如图1,如果sql=”select PaymentId ,Amount from Payment ” 这样使用context.ExecuteStoreQuery<Payment >(sql, args);那么会报异常,因此需要将Vendor 列补上 。正确的sql=”select PaymentId ,Amount, null as Vendor from Payment”

3.如果sql 返回的列 多余具体化的实体属性的个数,那么EF将会忽视多出的列。

4.如果是你返回的表是映射到几个继承关系的实体类上,那么返回的行需要具体化到几个实体上,EF是无法根据识别列来将返回的行具体化到相应的继承类型上去,这是EF会抛出一个运行时的exception

5.如果实体有complex Type属性,那么实体对象的实例是无法用ExecuteStoreQuery()来返回的,因为ExcuteStoreQuery()是无法返回一个complex Type的集合的.返回单个complex type是支持的,但是返回的实体对象里包含complex type就不支持。

6.可以返回实体对象属性的子集,就是说如果对于Payment表,我们查询返回PaymentId和Amount字段,然后我们定义一个subPayment 实体包含PaymentId和Amount属性,然后使用ExcuteStoreQuery<subPayment>()

2、使用ExecuteStoreCommand:这个更加灵活,你可以执行Update,Insert,Delete语句。

代码语言:js
AI代码解释
复制
using (SzmbEntities entity = new SzmbEntities()) 
{    
         var item = entity.Weatherwarnings.OrderByDescending(x=>x.Id)    
                    .Where(x => x.PublishTime < now.AddDays(-14))    
                    .FirstOrDefault();    
          if (item != null)    
          {    
                string sql = "Delete FROM  [Weatherwarning] where Id < @ID";    
                 var args = new DbParameter[] {    
                    new SqlParameter { ParameterName = "ID", Value = item.Id}    
                 };    
                 entity.ExecuteStoreCommand(sql,args);    
           }    
  }

ExecuteStoreCommand()返回一个int值,影响的行数。

相关文章:

Entity Framework 和 AppFabric 中的二级缓存

对Entity Framework应用二级缓存

Performance Considerations for Entity Framework 5

https://github.com/ChrisNanda/EntityFramework.Cache

Entity Framework - Second Level Caching with DbContext

Application using Entity Framework's Code First to dynamically connect to two different databases

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-11-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言】扫雷游戏的简单实现
首先我们创建一个菜单,供玩家选择,菜单跟上一期的三子棋的菜单一样,这里就不多说了;
YoungMLet
2024/03/01
1480
C语言实现小游戏之扫雷
相信大家都曾玩过一个经典的小游戏——扫雷,在学习了C语言有关于数组、循环语句、选择语句等知识后,我决定用C语言实现一个简易版的扫雷游戏,接下来我将在本篇文章中向大家介绍我的思路以及具体的实现过程。
摘星
2023/04/28
4970
C语言实现小游戏之扫雷
【纯手工扫雷“不含一点添加剂”】完全c语言版
扫雷包括雷区、地雷计数器(位于左上角,记录剩余地雷数)和计时器(位于右上角,记录游戏时间),确定大小的矩形雷区中随机布置一定数量的地雷(初级为9*9个方块10个雷,中级为16*16个方块40个雷,高级为16*30个方块99个雷,自定义级别可以自己设定雷区大小和雷数,但是雷区大小不能超过24*30),玩家需要尽快找出雷区中的所有不是地雷的方块,而不许踩到地雷。
比特大冒险
2023/04/16
2750
【纯手工扫雷“不含一点添加剂”】完全c语言版
【C语言实战项目】扫雷游戏
众所周知,扫雷是一项军事行动的代称,是指搜索和清除地雷、水雷及其他爆炸物的行动...哈哈,开玩笑的啦!扫雷使我们快乐:>!我们今天来学习如何使用C语言编写一个简易的扫雷游戏,如果还有不太了解扫雷游戏的同学推荐在https://minesweeper.online/cn扫雷游戏网站上了解扫雷的游戏规则,也可以在上面选择一个难度玩上几局体验一下。那我们废话不多说,下面开始我们扫雷之旅》》》
修修修也
2024/04/01
1480
【C语言实战项目】扫雷游戏
C语言(扫雷游戏)
首先我们来介绍一下扫雷游戏的玩法,扫雷游戏的常规界面(9*9)如下:
_小羊_
2024/10/16
1560
C语言(扫雷游戏)
深入剖析C语言第一大门坎 -- 扫雷
​ 前言 :深入学习C语言的数据类型和变量,分支和循环,数组及函数的内容后,就可以制作一个简单的小游戏 – 扫雷,但是当我们把学过的知识来制作这个游戏时,不免遇到些困难及挑战,这是完全正常的现象,因此不必过于焦虑,留给自己足够的时间去理解以及消化。接下来我会带着大家深入剖析扫雷游戏运行的代码逻辑!
egoist祈
2025/01/23
1110
深入剖析C语言第一大门坎 -- 扫雷
C语言实现扫雷游戏(详解)
扫雷相信大家也都应该玩过,在这里还是简单介绍一下: 《扫雷》是一款大众类的益智小游戏,游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。
YIN_尹
2024/01/23
1810
C语言实现扫雷游戏(详解)
C语言实现扫雷游戏
在这个数字化的时代,游戏已经成为我们生活中不可或缺的一部分。无论是复杂的3D大作,还是简单的桌面小游戏,它们都能带给我们无尽的乐趣和挑战。今天,我们要一起回到那个经典的桌面游戏时代,探索如何用C语言编写一个充满怀旧气息的扫雷小游戏。
平凡之路.
2024/10/09
1420
C语言实现扫雷游戏
c语言实现扫雷
扫雷的过程中,布置的雷和排查出的雷的信息都需要存储,所以我们需一定的数据结构来存储这些信息。 因为我们需要在9*9的棋盘上布置雷的信息和排查雷,我们首先想到的就创建⼀个的数组来存放信息。
用户11029269
2024/03/19
1330
c语言实现扫雷
重生之我在c语言玩扫雷
声明:(本博主为c语言萌新小白,所以以实践角度出发,运用可能需要的理论,带着大家写c语言扫雷游戏)!!
用户11367452
2024/11/21
720
重生之我在c语言玩扫雷
实现Windows经典游戏——扫雷
以9*9的简单模式为例,游戏开始时系统会生成10颗雷随机分布在这9*9的格子当中。
Yui_
2024/10/16
1700
实现Windows经典游戏——扫雷
C语言实现扫雷小游戏(上)
前文有写到三(多)子棋小游戏,三子棋游戏只需要一个数组就够了,但是对于扫雷游戏的实现,一个数组是不够的,需要创建两个数组。
小孙同学
2022/01/14
1.8K0
【C语言BOSS篇】揭秘扫雷游戏的开发之旅
《扫雷》是一款大众类的益智小游戏,于1992年发行。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。
f狐o狸x
2024/11/19
1430
【C语言BOSS篇】揭秘扫雷游戏的开发之旅
用C语言实现的简易版扫雷小游戏
首先肯定需要一个棋盘作为游戏的界面,这里我们选用二维数组来创建这个棋盘,类似的效果就如下面的图:
2的n次方
2024/10/15
650
用C语言实现的简易版扫雷小游戏
【C语言】C语言实现扫雷&&三子棋
游戏刚开始时,我们需要对棋盘进行初始化操作,对棋盘进行清空,以保证后续游戏的正常进行。我们定义一个InitBoard()函数来进行棋盘的初始化操作
用户10925563
2024/06/04
1150
【C语言】C语言实现扫雷&&三子棋
C语言-扫雷游戏逻辑实现
首先构思扫雷游戏的实现逻辑,我是用主函数去写顺序步骤,功能实现用函数去分开完成,这样不影响整体框架构建及思维进程.
小志biubiu
2025/02/27
580
【熟视C语言】扫雷——C语言练习项目,一起锻炼代码能力
  本篇文章将带你使用C语言编写小游戏扫雷,来跟着试着一起思考和编写,锻炼你的代码能力吧。
Crrrush
2023/06/23
2440
【熟视C语言】扫雷——C语言练习项目,一起锻炼代码能力
大一C语言必做项目扫雷超详解
首先,我们需要一个二维数组来存储哪些地方有雷,但这个二位数组应该是多大的?不妨先初始化一个9行9列的二维数组进行尝试。
fhvyxyci
2024/09/24
1080
大一C语言必做项目扫雷超详解
C语言小游戏之扫雷完整版
看到这张图片,相信很多小伙伴都非常熟悉,很多小伙伴都玩过扫雷这个小游戏,扫雷是一款益智类游戏,在放松娱乐的同时可以锻炼各位小伙伴的智商。
全栈程序员站长
2022/08/31
6950
C语言小游戏之扫雷完整版
用c语言实现扫雷(保姆级)
1.创建菜单 2.保证游戏可以自由的继续或取消 3.扫雷初始的界面和含有数字或雷需要两个二维数组。一套是初始界面(show)一套是含有雷(mine)的。 4.初始化数组,随机生成雷。 5.判断输入的坐标是否是雷,若不是则判断周围有几个雷 6.游戏结束后由玩家决定是否继续游戏 7.由于代码较长所以我们创建三个项目分别用来两个源文件测试,游戏和一个头文件操控。
薄荷冰
2024/01/22
1580
相关推荐
【C语言】扫雷游戏的简单实现
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档