我有一个使用vs2010开发的dll的网站。
在dll中,我有一个方法C.GetData(int id)
返回我的对象的IEnumerable
集合。当我使用中继器显示数据时,我看到的是"旧"数据。例如,在数据库中,我有name=Maurox
,但在.aspx页面中,我看到name=Pippo
,这是更新前字段的旧值。
如果我使用相同的查询(从方法C.GetDate
复制/粘贴)数据是ok的,我看到name=Maurox在5页。
下面是一个例子:
与C.GetData()我有这一行(错误)51 Via Roma佛罗伦萨00100
与"inline" linq(复制/粘贴linq查询后面的代码),我有:51
Via罗马佛罗伦萨00101
查询很简单:
from c in db.ContattiRecapiti
join cc in db.Contatti on c.idcontatto equals cc.IDContatto
join aa in db.aspnet_Membership on cc.aspnet_UserId equals aa.UserId
where cc.aspnet_UserId == UserId && cc.Attivo == 1 && aa.IsApproved == true && c.attivo == 1
select c
我怎么能解决这个问题?有缓存吗??
谢谢!
如果使用LINQ to SQL或实体框架,则有一个内部对象缓存,它是数据/对象上下文使用的工作单元模式的实现。你可以尝试调用Refresh()方法,看看它是否为你刷新数据…
还有,你如何存储你的数据/对象上下文?是全局存储,还是为每个LINQ查询存储?
您确定您正在正确调用函数吗?请确保您调用的函数显示…你可以在ispostback函数或其他地方使用它。我不认为在dll中有一个单独的缓存。浏览器缓存可能未被清除。此外,请在刷新(ctrl+F5)页面