2017-04-07 52 views
1

所以我有用户上传文件以供处理到我的服务器上。内容被读入SQL表,为所有意图和目的将其称为ImportedData。然后用户操纵它们,然后当他们想要提交数据进行处理时,数据被提交给上游系统(这里不重要),然后从上述表格中删除数据。如何在用户退出时清除表格?

然而,也有可能是用户不进口,然后不管出于什么原因决定导航离开该页面,关闭浏览器,然后回家一天的情况下,你有什么。影响是行将留在ImportedData中。现在

我最初的想法是只运行一个代理作业删除超过一天年长任何行;早晨之后用户不太可能希望能够处理数据。

然而,有一个“更好”的方式?

该应用程序是使用MVC ASP.Net Razor前端,后端的所有C#,实体框架等构建的。我只是想知道我能做些什么来移除特定于导入的ImportedData中的数据用于确切导入会话的唯一GUID),因此当用户进行任何不干净的注销时,该导入的唯一数据将被删除?

+0

以实例讲解的过程中的每一步都会有很大的帮助 – TheGameiswar

+0

你写的内容数据库,因为他们正在被你的后端看? – lbrahim

回答

0

我建议不要直接删除的行。您可以为存储过程调度作业,将旧数据加载到临时表中并保留该表,直到下次执行存储过程。

逻辑是:

Create procedure Name 
AS 
BEGIN 
(
IF EXISTS(SELECT * FROM SYS.TABLES WHERE NAME = N'...') 
BEGIN 
DROP TABLE ... 
END 
CREATE TABLE TABLE_NAME 
... 
INSERT INTO TABLE_NAME 
SELECT .. 
FROM YOUR_TABLE 
) 
END 

只需确保数据保持柜面有些不甘的事情发生。

0

以下是您可能做的一件事:您可以在问题的页面上添加一点javascript,以定期,合理的时间间隔对服务器执行ajax调用 - 可能每隔几分钟一次 - 这只会表明用户的浏览器仍在查看该记录的服务器。您可以在相应的数据库记录上更新某种LastClientHeartbeat时间戳,以表明它仍在查看。然后,在您定期执行的清理任务中,您可以对其进行编程以跳过删除LastClientHeartbeat时间戳相对较近(在最后几分钟内)的文件,因为这表示用户仍然在浏览器中打开该页面。

这不是一个非常复杂的解决方案,但它是实现非常简单,它会(大部分)防止意外删除用户都简单地把他们甜蜜的时间来完成工作的文件。