在保留所有项目的历史记录的同时操作数据列表

时间:2015-07-28 14:44:33

标签: c# entity-framework asp.net-web-api

这更像是一个普遍的逻辑问题,而不是语言的任何特定问题(尽管我使用的是Web API,C#和实体框架)。

这是场景。您有一个网页上的项目列表。每个项目都有多个可以编辑的字符串字段。可以删除每个项目,也可以创建新项目。按下按钮后,网页将通过RESTful API将新更新的项目列表发送到应用程序。

该应用程序将接收数据,然后尝试更新其连接到的数据库中的表(通过DbContext)。如果更新了项目,则更新原始表条目。如果添加了项目,则插入新的表条目。 (棘手的部分)如果一个项目被删除,那么表格条目将有一些指示,它现在只是历史数据,不应该是活动的。

对我来说,困难在于将POST请求中的项目列表与数据库表中的项目进行比较,然后相应地处理每个项目(无需执行黑客作业)。

注意:根据GET请求,应用程序应该能够确定哪些项目具有历史性,哪些项目不具有历史性。

感谢您的回复!如果我能澄清任何事情,请告诉我。

1 个答案:

答案 0 :(得分:2)

如何在客户端存储项目的id-s(同时不显示它们)并跟踪每个项目的状态(添加,更新,删除,未更改)。然后您可以将此信息与所有项目一起发布,并在服务器上做出相应的反应

软删除是一项相当简单的任务,您只需谷歌软删除即可。

此外,您可以在数据库中设置一个视图来过滤掉历史数据(使用WHERE DELETED = 0过滤器),只需将所有数据选择重定向到此视图。