当前位置:  开发笔记 > 编程语言 > 正文

如何强制Linq使用SQL不使用缓存?

如何解决《如何强制Linq使用SQL不使用缓存?》经验,为你挑选了1个好方法。

当我进行两次相同的查询时,第二次它不会从数据库返回新行(我猜它只是使用缓存).

这是一个Windows窗体应用程序,我在应用程序启动时创建dataContext.

如何强制Linq SQL不使用缓存?

这是一个示例函数,我遇到了问题:

public IEnumerable NewOrders()
{
    return from order in dataContext.Orders
           where order.Status == 1
           select order; 
}

Jon Skeet.. 10

最简单的方法是使用新的DataContext - 假设上下文提供的大部分内容是缓存和身份管理,听起来你只是想要一个新的上下文.你为什么要创建一个然后坚持下去呢?

顺便说一句,对于像你这样的简单查询,使用"普通"C#和扩展方法而不是查询表达式更具可读性(IMO):

public IEnumerable NewOrders()
{
    return dataContext.Orders.Where(order => order.Status == 1);
}

编辑:如果您从不希望它跟踪更改,则在执行任何操作之前将ObjectTrackingEnabled设置为false.但是,这将严重限制其有用性.你不能只是前后翻转开关(在两者之间进行查询).IMO,改变你的设计以避免单身上下文会好得多.



1> Jon Skeet..:

最简单的方法是使用新的DataContext - 假设上下文提供的大部分内容是缓存和身份管理,听起来你只是想要一个新的上下文.你为什么要创建一个然后坚持下去呢?

顺便说一句,对于像你这样的简单查询,使用"普通"C#和扩展方法而不是查询表达式更具可读性(IMO):

public IEnumerable NewOrders()
{
    return dataContext.Orders.Where(order => order.Status == 1);
}

编辑:如果您从不希望它跟踪更改,则在执行任何操作之前将ObjectTrackingEnabled设置为false.但是,这将严重限制其有用性.你不能只是前后翻转开关(在两者之间进行查询).IMO,改变你的设计以避免单身上下文会好得多.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有