当我两次进行相同的查询时,第二次它不会从数据库返回新行(我猜它只是使用缓存)。
这是一个 Windows 窗体应用程序,我在应用程序启动时在其中创建 dataContext。
如何强制 Linq to SQL 不使用缓存?
这是我遇到问题的示例函数:
public IEnumerable<Orders> NewOrders()
{
return from order in dataContext.Orders
where order.Status == 1
select order;
}
最简单的方法是使用新的 DataContext - 鉴于上下文为您提供的大部分内容是缓存和身份管理,听起来您确实只需要一个新的上下文。为什么你想只创造一个然后保留它?
顺便说一句,对于像您这样的简单查询,使用带有扩展方法的“普通”C# 比查询表达式更具可读性(IMO):
public IEnumerable<Orders> NewOrders()
{
return dataContext.Orders.Where(order => order.Status == 1);
}
编辑:如果你never希望它跟踪更改,然后设置启用对象跟踪 http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.objecttrackingenabled.aspx在你做任何事之前设置为 false。然而,这将严重限制它的实用性。您不能只是前后翻转开关(在两者之间进行查询)。在我看来,改变你的设计以避免单例上下文会更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)