当我进行两次相同的查询时,第二次它不会从数据库返回新行(我猜它只是使用缓存).
这是一个Windows窗体应用程序,我在应用程序启动时创建dataContext.
如何强制Linq SQL不使用缓存?
这是一个示例函数,我遇到了问题:
public IEnumerableNewOrders() { return from order in dataContext.Orders where order.Status == 1 select order; }
Jon Skeet.. 10
最简单的方法是使用新的DataContext - 假设上下文提供的大部分内容是缓存和身份管理,听起来你只是想要一个新的上下文.你为什么要创建一个然后坚持下去呢?
顺便说一句,对于像你这样的简单查询,使用"普通"C#和扩展方法而不是查询表达式更具可读性(IMO):
public IEnumerableNewOrders() { return dataContext.Orders.Where(order => order.Status == 1); }
编辑:如果您从不希望它跟踪更改,则在执行任何操作之前将ObjectTrackingEnabled设置为false.但是,这将严重限制其有用性.你不能只是前后翻转开关(在两者之间进行查询).IMO,改变你的设计以避免单身上下文会好得多.
最简单的方法是使用新的DataContext - 假设上下文提供的大部分内容是缓存和身份管理,听起来你只是想要一个新的上下文.你为什么要创建一个然后坚持下去呢?
顺便说一句,对于像你这样的简单查询,使用"普通"C#和扩展方法而不是查询表达式更具可读性(IMO):
public IEnumerableNewOrders() { return dataContext.Orders.Where(order => order.Status == 1); }
编辑:如果您从不希望它跟踪更改,则在执行任何操作之前将ObjectTrackingEnabled设置为false.但是,这将严重限制其有用性.你不能只是前后翻转开关(在两者之间进行查询).IMO,改变你的设计以避免单身上下文会好得多.