代码之家  ›  专栏  ›  技术社区  ›  Cᴏʀʏ bcherry

ASP.NET数据视图-行筛选器和应用程序缓存问题

  •  0
  • Cᴏʀʏ bcherry  · 技术社区  · 14 年前

    下午好女士们先生们--

    我的任务是在一个不熟悉的遗留应用程序中发现并修复一个bug,这个应用程序最近做了一些更改,但是我没有一个简单的方法(据我所知)来测试我的理论。我希望你的集体知识能为我证实这一点。

    此应用程序延迟加载查找列表(绕口令?)进入之内 DataTable 从数据库中获取,并将其作为对象存储在 HttpContext.Current.Application (一个 HttpApplicationState ).

    在进行更改之前,其中一个查找表绑定到 DropDownList

    Me._lookupList = TheSession.LookupCache.SomeLookupListName.DefaultView
    ...
    ddl.DataSource = Me._lookupList
    

    其中“SomeLookupListName”是一个只读属性,返回 数据表 HttpContext.Current.Application . 这些更改添加了一些筛选私有 Me._lookupList ( DataView )在被绑定到 下拉框 :

    Me._lookupList.RowFilter = "SomeTableIDColumn <> " & ... 
    

    发生了什么,如果你还没猜到,是不是 数据视图 现在为应用程序的每个用户筛选。我查看了代码,发现大多数其他查找列表都以这种方式复制到本地成员:

    Me._lookupList = New DataView(TheSession.LookupCache.SomeLookupListName)
    

    由于我不知道如何假装多个用户来攻击本地调试会话,因此将代码更改为使用后一种方法与前一种方法有什么不同吗?是否筛选结果 DataTable.DefaultView 实际将筛选器应用于基础 与使用 New DataView(...) ?

    下拉框 绑定(似乎是一个糟糕的解决方案)?我想坚持这个应用程序使用的丑陋的约定,这样我就不会让另一个开发人员感到惊讶,因为他们得到了类似的任务,否则我就绕过应用程序状态,直接从数据存储库中获取项目。

    谢谢你的反馈。

    1 回复  |  直到 14 年前
        1
  •  1
  •   dbugger    14 年前

    是否筛选结果 DataTable.DefaultView实际应用 与包装桌子不同 使用新的数据视图(…)?

    顺便说一下,使用调试器测试多个会话很容易。只需打开两个不同的浏览器(IE和FF)并指向同一个应用程序。用户登录可能相同,但会话将是唯一的。