1

我为具有以下关系的客户开发了一个应用程序:

SalesOrder 与 Customer 具有外键关系(一对一)。

客户现在希望能够删除客户,这样他们就不能用于任何未来(新的)销售订单,但显然我想保留历史记录以进行报告等。同样,记录可能需要更新-在极少数情况下可以在未来,因此在“编辑”模式下,客户需要在那里(但所有其他已删除的客户都不会)

我正在寻找有关对此进行建模的模式的输入或更好的建议。我的想法是在客户上有一个“存档”位,但我的问题是,如果有人加载旧的 SalesOrder,我还需要为客户填充的 DropDownList 加载该存档记录。

由于我使用的是 Entity Framework 和 EntityDataSource,我的猜测是我可能会在 DropDownList 的 SelectedValue 绑定上也遇到运行时异常,但我还没有验证这一点。

关于从哪里开始的任何想法或建议?

谢谢你。

4

1 回答 1

3

我相信我有一个解决方案。我整天都在绞尽脑汁,但我认为这很容易。在一个快速原型中,它似乎可以满足我的需要:

我在客户表中添加了一个“存档”位(实际上是在他们继承的 BusinessEntity 表中)。然后对于“编辑销售订单”页面,在查询客户时,我有一个 where 子句,其中包含按 ID 的客户。

例如(伪代码): SELECT CustomerID, Name FROM Customers WHERE Archived = 0 OR CustomerID = 52

这会拉动所有活跃的客户和我需要的记录的一个客户。这允许客户仍然链接到记录以进行编辑并且不会使用 DropDownList 绑定生成运行时异常。

对于报告,我假设我不会根据存档位进行过滤,因为无论如何它都是只读的。

于 2013-06-17T21:28:44.953 回答