例如,假设我有 3 个可能的项目状态,
- 打开
- 关闭
- 不活跃
假设我创建了两个项目,一个状态为“Open”,另一个状态为“Inactive”。然后,在某个地方,“非活动”状态不再相关,因此通过状态表中的一些“IsActive”标志将其停用。这会导致它不再显示在绑定到 DropDownList 或等效列表的状态列表中。
因此,现在当用户创建新项目时,“添加新”屏幕应该只显示两个活动状态,打开和关闭。但是现在假设他们正在编辑过去的项目,这些项目的状态可能不再处于活动和可用状态。使用哪些技术将非活动状态包含在列表中,至少在它们使用活动状态重新保存之前?(虽然我可能会允许以旧状态重新保存。)
我看到了一些选项,但在我不确定哪个最容易维护之前从未解决过这个问题:
- 始终从存储库中选择所有可能的状态,在托管代码中,过滤掉除项目当前设置的状态之外的非活动状态,并使用此列表进行绑定。
- 仅从存储库中选择活动状态并在托管代码中将项目状态附加(合并)到列表中,并与此列表绑定。
- 将项目的标识符传递给检索状态的 SQL,并使用它将项目的当前状态 UNION 到活动状态列表,并使用此列表进行绑定。
每个似乎实施起来都相当简单,但就像我说的,我对这种情况没有经验。我有几个可以通过管理员可用的维护屏幕激活/停用的项目列表;有些会保持相当静止,但有些会无限增长。当列表变得相当大时,选项 2 和 3 将是最有效的,但选项 1 似乎是最容易实现的。
在这一点上,我更关心时间而不是性能。我正在开发一个 ASP.NET 应用程序、.NET 2.0、C#、用于 UI 的 Web 表单和用于数据层的 (I/My)Batis.NET,它与 SQL Server 数据库通信。
StackOverflow 之神,你会建议我做什么?