2010-11-25 35 views
2

我正在使用控制台应用程序(C#)。它所做的是从数据库中提取文件并将它们存储在本地计算机上C驱动器上的相关文件夹中。上次应用程序运行的存储日期/时间

目前,每次运行控制台应用程序时,它都会从数据库中提取所有文件。

我希望能够做到的是每次运行它时,它只会提取自我上次运行控制台应用程序以来提交的文件。目前,这是从数据库中提取文件的linq语句。

var titleObjects = ctn.Titles.Where(t => !t.Deleted && t.SubmissionState == 2 &&(t.Approved.HasValue && t.Approved.Value)).Select(t => t); 

理想情况下,我想类似如下,其中应用程序的最后运行的日期和时间存储的地方:

var titleObjects = ctn.Titles.Where(t => !t.Deleted && t.SubmissionState == 2 && t.CreatedDate >= LastAppRun && t.CreatedDate <= DateTime.Now && (t.Approved.HasValue && t.Approved.Value)).Select(t => t); 

我如何去实现这个不确定。如果任何人有任何意见,我会非常感谢:)

+0

当您的应用程序启动时,获取当前日期/时间并处理“最后”日期/时间和当前时间之间的消息。在应用程序退出前,让它将当前时间保存为“最后”(您可以将时间格式设置为YYYYMMDDHHMMSS并保存到文件中)。你不确定哪部分? – Jon 2010-11-25 14:09:41

+0

@Jon,我只是不确定最好的办法是诚实。目前(我没有把它包括在上面)我有应用程序设置为要求用户输入和输出日期,但是我希望它能够更加无缝地工作。我只是不确定我将如何去保存应用程序中的“最后”日期/时间(不使用数据库)或甚至可能。 – 109221793 2010-11-25 14:13:37

+2

我能想到的选项:1.您自己的文件在磁盘上您选择的位置。 2.`System.Configuration` 3.`System.IO.IsolatedStorage` 4.注册表5.数据库本身。 – Ani 2010-11-25 14:17:00

回答

2

为什么不只是在数据库中创建一个表,并插入一个包含最后运行时间的记录。然后更新检索每次运行记录中的值并在完成时更新。

或者您可以为每次运行插入一条记录,以跟踪运行发生的时间,并在每次运行时选择具有最长日期时间的记录以在最后一次运行时计算出来。

5

您可以使用app.settings来做到这一点。这是一个有点容易,只需创建一个值,并将其值作为

Properties.Settings.Default.lastRunTime = DateTime.Now; 
Properties.Settings.Default.Save(); 

这是一个容易得多,当您使用的应用程序带有或不带有数据库

您也可以加密设置。谷歌进行加密。

0

如果您的数据库有几个控制台客户端会怎么样?它看起来像LastAppRun的存储是一个客户端任务。

您可以将LastAppRun序列化为一个文件并将其存储在IsolatedStorageFile中。

其他(更丑)选项是去注册表项。

相关问题