首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linq to Sql 更新数据时容易忽略问题

越来越多朋友喜欢用Linq to Sql来进行开发项目了,一般我们都会遇到CRUD等操作,不可否认,在查询方面Linq真的带来很大便利,性能方面也表现不错,在插入操作和删除操作Linq表现也还不错...大家有没有发觉,我们context是个私有变量,而我们GetUser虽然也是context取得,不过它用是它自己context,也就是说对于程序来说,它是两个对象,所以我们这里在submitChanges...时候,无论你怎么改都是没有效果,数据库始终不会改变,My God ,或许你会觉得这谁不知道啊,但是往往我们真的会忽略这一点,记得以前考试,往往都是难题目基本上全对,但越简单越容易题目,却会经常犯错...好了,知道了为什么出错,修改也简单了,两种方法: 方法一: public void UpdateUser(User user) {     DataContext context = new DataContext...("conn");             //当前context取     User existsUser = context.Users.SingleOrDefault(e => e.ID.Equals

1.3K80
您找到你想要的搜索结果了吗?
是的
没有找到

一步一步学Linq to sql(二):DataContext与实体

DataContext  DataContext类型(数据上下文)是System.Data.Linq命名空间下重要类型,用于把查询句法翻译成SQL语句,以及把数据数据库返回给调用方和把实体修改写入数据库...DataContext提供了以下一些使用功能:         以日志形式记录DataContext生成SQL         执行SQL(包括查询和更新语句)         创建和删除数据库 DataContext...然后在类型定义了三个属性,对应表三个字段。...类型把实体类和数据库数据进行关联。...但是不可否认,对于复杂查询,使用TSQL能获得更好效率。因此,DataContext类型也提供了执行SQL语句能力。代码执行结果如下图: ?

78120

linq to sql自动缓存(对象跟踪)

这篇东西应该至少一年前就写,不过因为个人太懒,一直没记下来,今天补上. linq to sql,对于同一个DataContext上下文环境,根据表主键选择记录时(当然这里所指“记录”会自动转成“对象...”),如果该记录已经被select过,默认情况下会被自动缓存下来,下次再选择时,将自动返回已缓存对象,而不是重新数据库里查询。...这个办法最简单,但却是一刀切办法,会关闭db所有的缓存功能,在查询请求远大于更新请求场景下,个人并不太喜欢。...2、创建一个新DataContext上下文来查询原始值 即:把u2取值部分改为 User u2 = null; using (dbDataContext db2 = new dbDataContext...,由于db2是刚创建,之前肯定没有查询Id==u1.id记录,所以缓存是空,因此会到数据库重新查询,当然db2用完后,会自动释放相关资源(using功劳!)

1.3K70

编写高质量代码改善C#程序157个建议

本文主要学习记录以下内容:   建议29、区别LINQ查询IEnumerable和IQueryable   建议30、使用LINQ取代集合比较器和迭代器   建议31、在LINQ查询避免不必要迭代...LINQ查询功能上来讲实际上可以分为三类:LINQ to OBJECTS、LINQ to  SQL、LINQ to XML。...image.png 现在来看另外一个查询,其实还是上面的查询只是做了简单修改 DataContext dataContext = new DataContext(ConfigurationManager.ConnectionStrings...在LINQ to SQL查询,要尽量始终使用IQueryable。...建议31、在LINQ查询避免不必要迭代  无论是SQL查询还是LINQ查询,搜索到结果立刻返回总比搜索完所有的结果再将结果返回效率要高。现在简单来创建一个自定义集合类型来说明。

92350

Linq to SQL 查询Tips

LINQ to SQL当中灵活查询操作是其一个很大优点, 但是当编写较复杂链接时有时候需要注意一些细节。...1、LINQ to SQL 提供了 DataLoadOptions用于立即加载对象,避免往返访问数据库,提高查询性能。...join rolemember in dataContext.RoleMembers                     on  roleData.RoleMemberId equals rolemember.ID...在Linq to SQL当中做Left Join第一要素就是要调用DefaultIfEmpty(), 但关键地方在于Where查询, 很多时候你需要Where过滤条件在关联表那端, 也就是说你是要关联一个带过滤条件表...这个时候需要使用into关键字生成新范围变量, 然后对其进行过滤, 而且DefaultIfEmpty必须要在Where执行之后再调用 4、在查询中使用IN语句,可能大家不知道怎么用,其实很简单 var

94090

calcite简单入门

]]) 3 LogicalTableScan查询 如上,节点树最后节点均为LogicalTableScan,假设我们不参与(LogicalTableScan)Calcite查询过程,即不做SQL解析...如果当前类型“表”能够支持我们自己写代码优化这个过滤器,那么执行完自定义优化器,可以把该过滤条件集合移除,否则,就让calcite来过滤,简言之就是,如果我们不处理List filters ,Calcite...也会根据自己规则在内存过滤,无非就是对于查询引擎来说查数据多了,但如果我们可以写查询引擎支持过滤器(比如写一些hbase、esfilter),这样在查时候引擎本身就能先过滤掉多余数据,更加优化...全部数据(也就意味着每次查询都是扫描这个表数据,我们干涉不了任何执行过程);当使用FilterableTable时候,我们需要实现函数Enumerable scan(DataContext root...demo 在4.2演示,我们能够使用SQL查询CSV文件数据。

6.9K21

LINQ to SQL(1):基础入门

LINQ to SQL是在SQL SERVER数据库上设置一个强类型化界面的方式,LINQ to SQL提供方式是目前我所见到查询SQL SERVER最简单也是最有效方式,他可以使用自定义类型与数据表甚至存储过程进行对应...,而不像我们使用ADO.NET那样,把更多功夫用在数据类型转换等等问题上,当程序运行时候,LINQ to SQL会将我们使用自己语言定义模型语言继承查询转换为SQL,然后将他在数据库上执行...,它是用于数据库检索对象和提交更改主要通道 在项目的Main方法中键入如下代码 DataContext dc = new DataContext("Data Source=XIAOYAOJIAN;Initial...: 1.在构造DataContext实例对象时候,传入是一个连接字符串,当然,它还有好几种重载 2.真正查询是在foreach时候才真正开始,在定义linq规则时候,并没有查询 运行这段代码...这里我们已经不需要gettable这种方式啦,这样,我们就实现了一个简单使用ORM设计器实现LINQ to SQL模型,怎么样,LINQ to SQL查询方式,是不是很让人心潮澎湃啊

1.3K60

MySQL 查询重复数据,删除重复数据保留id最小一条作为唯一数据

开发背景:   最近在做一个批量数据导入到MySQL数据库功能,批量导入就可以知道,这样数据在插入数据库之前是不会进行重复判断,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性...HAVING COUNT(brandName)>1 #条件是数量大于1重复数据 ) 使用SQL删除多余重复数据,并保留Id最小一条唯一数据: 注意点: 错误SQL:DELETE FROM brand...Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName HAVING COUNT(brandName)>1) t) #查询显示重复数据都是显示最前面的几条...,因此不需要查询是否最小值 更加简单快捷方式: 这是老飞飞前辈给了一个更加方便,简洁写法(非常感谢大佬方法): DELETE FROM brand WHERE Id NOT IN (SELECT...Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName) t) 这句意思其实就是,通过分组统计出数据库不重复最小数据id编号,让后通过

3.4K20

《深入浅出WPF》学习笔记之深入浅出话Binding

(Dependency Object)   *容器DataContext (WPF默认使用源)   *ElementName指定源:在C#代码把对象Name作为源赋给Binding   *RelativeSource...在XAML为外层StackPanelDataContext赋了值,内层TextBoxBinding只指定了Path,没有指定Source,这时TextBoxBinding会自动向UI元素树上层寻找可用...private访问级别,这时可以把该控件作为窗体ADataContext 6.3.7 使用集合作为列表控件ItemsSource   WPF列表控件派生自ItemsControl类,自然继承了ItemsSource...对象作为Binding源   尽管流行架构先通过Linq等手段把DataTable里数据转换成用户自定义类型集合,但WPF也可以让列表控件和DataTable直接建立Binding <StackPanel...6.3.10 使用Linq检索结果作为Binding源   使用Linq我们可以方便地操作集合、DataTable和XML对象而不必动辄好几层foreach循环嵌套只是为了完成一个简单任务   Linq

5.2K10

一步一步学Linq to sql(六):探究特性

这样查询不是很合理,我们可以通过设置DataContextDataLoadOption,来指示 DataContext再加载产品信息同时把对应产品订单信息一起加载: NorthWindDataContext...主键缓存  Linq to sql对查询对象进行缓存,之后的如果只根据主键查询一条记录的话会直接从缓存读取。...由于这个特性,我们在使用存储过程作为实体更新方法时候就要当心了,存储过程书写错误,即使你提交了修改也很可能导致缓存数据和数据库数据不一致,引起不必要麻烦。...DataContext隔离  有的时候我们会把对象外部传入DataContext,要求它更新,由于不同DataContext是相对独立。...由于新DataContext还没有获取实体,我们只能通过附加方式更新数据。 首先把Customer表主键字段加上IsVersion标识: ?

48920

EFRepository模式应用场景

在DDD领域构架系统,为了将领域模型领域逻辑层中和数据映射层之间解耦出来,我们引用到了Repository模式,属于属于泛型编程中一个比较常用模式,尤其应用到MVC构架更为常见,我们来简单介绍几个概念...2、在《企业构架模式》,译者对其翻译为:资源库,说明如下: 通过用来访问领域对象一个类似集合接口,在领域与数据映射层之间进行协调 下面通过一个案例才详细说明该解耦过程 一、新建应用程序,添加Linq...也就是实现领域模型操作: public class Repository : IRepository where T:class { public DataContext...,但是实际每个实体都有符合自己业务逻辑。... GetAllByDinnerId(int id); } 4、最后该实体Repository类实现,注意要同时继承它接口约束和Repository类,如下: public

1.1K30

LINQ能不能用系列(二)LINQ to SQL 效率比对

前言 很多人听说过LINQ TO SQL与ADO.NET传统方式用于不同环境,LINQ TO SQL与ADO.NET传统方式也没有可比性,就像公交车与私家车一样,虽然是车但用途完全不同,但很少有人去探究...内容 测试环境:net framework 4.0 + Sql Server 2008 测试用途:100w条数据 like 查询,原因添加、修改、删除消耗资源与时间相对较少,不易测试,查询里面最消耗时间无非就是...like 与 in查询,我们就采用like 相对比较耗时与耗时间典型来测。...查询 DataClasses1DataContext db = new DataClasses1DataContext(); var glist = from...LINQ TO SQL第一次时候比较消耗资源,原因LINQ第一次初始化比较耗时,之后LINQ查询与ADO.NET几乎一样,在100w条数据下随然数据大同小异,但已经足够说明问题,LINQ TO SQL

1.2K50
领券