【问题标题】:cache in .dll with asp.net?用asp.net 缓存在.dll 中?
【发布时间】:2011-12-11 18:53:45
【问题描述】:

我有一个使用 vs2010 开发的 dll 的网站。

在 dll 中,我有一个方法 C.GetData(int id),它返回我的对象​​的 IEnumerable 集合。当我使用中继器显示数据时,我看到“旧”数据。例如,在数据库中我有name=Maurox,但在.aspx 页面中我看到name=Pippo,这是更新前字段的旧值。

如果我使用相同的查询(从方法 C.GetDate 复制/粘贴)数据是好的,我会在 5 月的页面上看到 name=Maurox。

这是一个例子:

使用 C.GetData() 我有这一行(错误)51 Via Roma Firenze 00100

使用“内联”linq(在后面的代码中复制/粘贴 linq 查询)我有:51
通过罗马佛罗伦萨 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

我该如何解决这个问题?有缓存吗??

谢谢!

【问题讨论】:

    标签: asp.net linq dll ado.net webforms


    【解决方案1】:

    如果使用 LINQ to SQL 或实体框架,则有一个内部对象缓存,它是数据/对象上下文采用的工作单元模式的实现。您可以尝试调用Refresh() 方法来查看它是否会为您刷新数据...

    另外,您如何存储数据/对象上下文?您是全局存储它,还是为每个 LINQ 查询存储它?

    【讨论】:

    • 好的,这似乎解决了我的问题。我在返回 C 之前插入了db.Refresh(System.Data.Objects.RefreshMode.StoreWins, C);。我为每个 linq 查询存储它
    【解决方案2】:

    你确定你正确地调用了这个函数??? 请确保您调用该函数来显示..您可能会在 ispostback 函数或其他函数中使用它。我认为 dll 中没有单独的缓存。浏览器缓存可能不会被清除。另外,请在刷新(ctrl+F5)页面后查看数据

    【讨论】:

      猜你喜欢
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多