LINQ-to-SQL那点事~LINQ-to-SQL中的数据缓存与应对

简介:

在linq to sql作为底层数据源时,我们进行一个linq返回结果集的操作,这没有问题,不过,当你进行update操作之后,再使用linq返回结果集时,你会发现,它返回的

信息是不正确的,或者总是发生变化的,这是为何?

事实上,这是由于DataContext本身的机制所决定的,它本身就有缓存机制,当你从数据库把信息得到时,然后修改它,再进行保存,如果你再把信息取出来,这时,你会从datacontext的缓存中得到,而不是真正的数据库里得到,这个datacontext缓存如果想要解决,有几种方法:

1  datacontext不要共享化(不要静态化,不要单例),使用私有datacontext,即每个操作,使用一个新的datacontext。

2  使用派生类,将查询结果保存到实体的子类中,也可以避免这种缓存数据的产生。

下面是具体的代码:

 1         /// <summary>
 2         /// 需要把Join的表关系写在这里
 3          /// </summary>
 4          /// <returns></returns>
 5          public IQueryable<User_Info> GetDetailModel()
 6          {
 7              var linq = from data1 in base.GetModel<User_Info>()
 8                        join data2 in base.GetModel<User_Profile>() on data1.UserID equals data2.UserID
 9                        select  new User_Info_Ext
10                            {
11                              ...
12                            };
13            return linq;
14         }
 

我们无法想像把所有查询操作都放在DATA层代码会变得什么样,所以,有时,我们更多的时候需要去创建一种线程安全的,单例的数据上下文对象,这就是我一直
用的dataContext工厂,通过工厂去动态创建DataContext实例,通过lock和thread来实现单线程共享及线程安全的数据上下文对象,更多DataContext知识,

可以访问我的这篇文章

本文转自博客园张占岭(仓储大叔)的博客,原文链接:LINQ-to-SQL那点事~LINQ-to-SQL中的数据缓存与应对,如需转载请自行联系原博主。


目录
相关文章
|
21天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL隐式游标:数据的“自动导游”与“轻松之旅”
【4月更文挑战第19天】Oracle PL/SQL中的隐式游标是自动管理的数据导航工具,简化编程工作,尤其适用于简单查询和DML操作。它自动处理数据访问,提供高效、简洁的代码,但不适用于复杂场景。显式游标在需要精细控制时更有优势。了解并适时使用隐式游标,能提升数据处理效率,让开发更加轻松。
|
3天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
12 1
|
4天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
9天前
|
SQL 机器学习/深度学习 数据采集
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
|
10天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
10天前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之在DataWorks的数据开发模式中,在presql和postsql中支持执行多条SQL语句如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
39 1
|
11天前
|
SQL 机器学习/深度学习 算法
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
|
11天前
|
SQL 机器学习/深度学习 数据挖掘
SQL Server Analysis Services数据挖掘聚类分析职业、地区、餐饮消费水平数据
SQL Server Analysis Services数据挖掘聚类分析职业、地区、餐饮消费水平数据
|
14天前
|
SQL Java 数据库
java代码中调用dao层查询接口,代码没有返回数据,打印出的sql查出了数据
java代码中调用dao层查询接口,代码没有返回数据,打印出的sql查出了数据
17 1
|
14天前
|
存储 缓存 NoSQL
Redis入门到通关之Redis缓存数据实战
Redis入门到通关之Redis缓存数据实战
21 0