Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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#_.net_Sql Server - Fatal编程技术网

C# 如何确保我的数据库缓存是最新的?

C# 如何确保我的数据库缓存是最新的?,c#,.net,sql-server,C#,.net,Sql Server,我有一个昂贵的操作来调用数据库,并填充一个对象数组以在组合框中使用。因为它可能需要约2分钟,我会在启动时缓存它 当用户需要使用这些组合框时,我需要确保它们具有当前数据。我怎样才能做到这一点呢?我猜数据的变化相当频繁。在这种情况下,我将在INSERT、UPDATE或DELETE上创建一个触发器,用于计算存储在某个草稿行表中的校验和/CRC。在填充列表框时检索此值,然后与此值进行比较。这将是数据是否已更改的良好指标 一个更简单的替代解决方案是只存储上次更新的日期/时间,而不是校验和 在一个应用程序中

我有一个昂贵的操作来调用数据库,并填充一个对象数组以在组合框中使用。因为它可能需要约2分钟,我会在启动时缓存它


当用户需要使用这些组合框时,我需要确保它们具有当前数据。我怎样才能做到这一点呢?

我猜数据的变化相当频繁。在这种情况下,我将在
INSERT
UPDATE
DELETE
上创建一个触发器,用于计算存储在某个草稿行表中的校验和/CRC。在填充列表框时检索此值,然后与此值进行比较。这将是数据是否已更改的良好指标

一个更简单的替代解决方案是只存储上次更新的日期/时间,而不是校验和


在一个应用程序中,我们向表中添加了两列:IsActive和LastUpdate。IsActive用于代替直接删除记录。LastUpdate是一个时间戳,指示每个记录上次更新的时间。
选择LastUpdate>''
将为您提供所需更改的列表。

但数据库可能由多个用户更改。@Malfist-假设您创建了一个带有时间戳的类,以及查找代码/值列表。启动时,加载列表并使用当前时间。稍后,您可以使用缓存的时间戳调用一个proc,如果数据库中的时间戳在您发送的时间之后,它会返回一个新的循环列表。我们使用类似的系统,其中大表具有上次更新的时间戳,并且只有当该时间戳发生变化时才会刷新