Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在保留所有项目的历史记录的同时操作数据列表_C#_Entity Framework_Asp.net Web Api - Fatal编程技术网

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

C# 在保留所有项目的历史记录的同时操作数据列表,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,这更像是一个一般的逻辑问题,而不是一种语言特有的问题(尽管我使用的是webapi、C#和实体框架) 下面是一个场景。您在网页上有一个项目列表。每个项目都有多个可编辑的字符串字段。可以删除每个项目,也可以创建新项目。按下按钮后,网页将通过RESTfulAPI向应用程序发送最新更新的项目列表 该应用程序将接收数据,然后尝试更新它所连接的数据库中的表(通过DbContext)。如果更新了某个项,则会更新原始表条目。如果添加了一个项目,则会插入一个新的表条目。(棘手的部分)如果一个项目被删除,那么表条目

这更像是一个一般的逻辑问题,而不是一种语言特有的问题(尽管我使用的是webapi、C#和实体框架)

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

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

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

注意:根据GET请求,应用程序应该能够确定哪些项目是历史项目,哪些项目不是历史项目,因此它只能提取非历史项目


感谢您的回复!如果我能澄清什么,请告诉我。

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

而软删除是一个相当简单的任务,你可以只谷歌软删除

此外,您可以在DB中有一个视图来过滤历史数据(使用
WHERE DELETED=0
filter)并将所有数据选择重定向到此视图