1 使用原生SQL语句更新--Database.ExecuteSqlCommand 假设你有一张如图9-1所示的Payment数据库表. 图9-1 1.1 实体类型: public class Payment { public int PaymentId { get; set; } public decimal Amount { get; set; } public string Vendor { get; set; } } 1.2 数据访问类: public class EF6RecipesC
在EF中执行Sql语句. using (var context = new EFRecipesEntities()) { string sql = @"insert into Chapter3.Payment(Amount, Vendor) values (@Amount, @Vendor)"; var args = new DbParameter[] { new SqlParameter { ParameterName = "Amount", Value = 99
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Text; using System.Data.Entity.Infrastructure.Interception; using System.Diagnostics; using System.Data.Common; using NLog; namespace Libing.Portal.Web.
在EntityFramework的CodeFirst模式中,我们想将程序自动生成的sql语句和执行过程记录到日志中,方便以后查看和分析. 在EF的6.x版本中,在DbContext中有一个Database属性,Database.Log就是用来专门记录这种日志的. Database.Log是一个Action<string>委托,给其赋值一个函数就行. 代码如下: using Model; using System; using System.Collections.Generic; using
Entity Framework为我们提供了很大的方便,但有时候,我们想看看EF生成的Sql语句到底是怎样的,一种方式是我们可以启用Sql Server Profer工具.今天介绍另外一种方式,非常简单,可以监听EF执行的每条Sql语句,而且也可以自定义在执行语句前,执行语句完成后的动作.通过这种方式也可以非常方便的去监听系统的运行日志. 完成这个功能,需要引入二个第三方的组件,分别是Clutch.dll和Clutch.Diagnostics.Enti
一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regexp对性能影响较大. 二.使用Rand()函数获取随机数据 rand();随机数函数 1.随机排序 mysql> select * from hello order by rand(); 2.随机列抽取3条 mysql> select * from hello order by rand() lim
适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式和带条件形式. 1.简单形式: 仅返回没有订单的客户: var q = from c in db.Customers where !c.Orders.Any() select c; 生成SQL语句为: SELECT [t0].[CustomerID], [t0].[CompanyName], [t0
生成SQL语句的功能可以算是LinqToDB框架的最后一步.从上一章中我们可以知道处理完表达式树之后,相关生成SQL信息会被保存在一个叫SelectQuery类的实例.有了这个实例我们就可以生成对应的SQL语句.想要了解这一步部分的功能就必须从三个方面入手.一.Linq To SQL的机制原理.二.如何生成SQL语句.三.设置映射结果. 生成映射表达式 对于Linq To SQL的机制原理在前面的章节里面已经讲过了.这里笔者提出来主要目标是明确什么时候触发.下面的代码不是看前面的获得Query<
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操作包括3种形式,分别为简单形式.关系条件形式.First()形式.下面分别用实例举例下: 1.简单形式: 例如:使用where筛选在伦敦的客户 var q = from c in db.Customers where c.City == "London" select c; 再如:筛选19
对象加载 延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是你可以使用延迟加载将额外信息的检索操作延迟到你确实需要检索它们时再进行.请看下面的示例:检索出来CustomerID,就根据这个ID查询出OrderID. var custs = from c in db.Customers where c.City == "Sao Paulo" sele
适用场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:使用Group By按CategoryID划分产品. 说明:from p in db.Products 表示从表中将产品对象取出来.group p by p.CategoryID into g表示对p按CategoryI