c# - Entity Framework /数据库 - 归档外键记录

标签 c# asp.net database entity-framework database-design

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

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

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

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

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

关于从哪里开始有什么想法或建议吗?

谢谢。

最佳答案

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

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

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

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

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

关于c# - Entity Framework /数据库 - 归档外键记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17156731/

相关文章:

c# - 如何格式化 serilog 属性名称?

php - 如何在另一个sql查询的一段时间内运行一个sql查询?

ruby-on-rails - ruby中特定迁移之前添加迁移的方法是什么

c# - NewtonSoft 在运行时添加 JSONIGNORE

c# - 如何通过 SFTP 下载和打开 XML 文件?

c# - 如何防止 DataGridView 在数据源更改时自动滚动?

MySQL 需要很长时间(数小时)来确定丢失的连接

c# - 在 WPF 中对分类数据进行分组

asp.net - 将文件存储在服务器和数据库中?

asp.net - 使用 Entity Framework 创建具有多个查询的 MVC ViewModel