我正在使用控制台应用程序(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 :(得分:5)
您可以使用app.settings。创建一个值并将其值设置为
更容易一些Properties.Settings.Default.lastRunTime = DateTime.Now;
Properties.Settings.Default.Save();
使用带或不带数据库的应用程序
时要容易得多您还可以加密设置。谷歌加密。
答案 1 :(得分:2)
为什么不在数据库中创建一个表并插入包含上次运行时的记录。然后更新从每次运行的记录中检索值,并在完成后更新它。
或者您可以为每次运行插入一条记录,以便跟踪运行的时间,并选择每次运行时具有最大日期时间的记录,以便在上次运行时计算出来。
答案 2 :(得分:0)
如果您的数据库有多个控制台客户端怎么办?看起来LastAppRun的存储是一个客户端任务。
您可以将LastAppRun序列化为文件并将其存储在IsolatedStorageFile中。
其他(更难看的)选项是获取注册表项。