C# 如何确保我的数据库缓存是最新的?
我有一个昂贵的操作来调用数据库,并填充一个对象数组以在组合框中使用。因为它可能需要约2分钟,我会在启动时缓存它C# 如何确保我的数据库缓存是最新的?,c#,.net,sql-server,C#,.net,Sql Server,我有一个昂贵的操作来调用数据库,并填充一个对象数组以在组合框中使用。因为它可能需要约2分钟,我会在启动时缓存它 当用户需要使用这些组合框时,我需要确保它们具有当前数据。我怎样才能做到这一点呢?我猜数据的变化相当频繁。在这种情况下,我将在INSERT、UPDATE或DELETE上创建一个触发器,用于计算存储在某个草稿行表中的校验和/CRC。在填充列表框时检索此值,然后与此值进行比较。这将是数据是否已更改的良好指标 一个更简单的替代解决方案是只存储上次更新的日期/时间,而不是校验和 在一个应用程序中
当用户需要使用这些组合框时,我需要确保它们具有当前数据。我怎样才能做到这一点呢?我猜数据的变化相当频繁。在这种情况下,我将在
INSERT
、UPDATE
或DELETE
上创建一个触发器,用于计算存储在某个草稿行表中的校验和/CRC。在填充列表框时检索此值,然后与此值进行比较。这将是数据是否已更改的良好指标
一个更简单的替代解决方案是只存储上次更新的日期/时间,而不是校验和
在一个应用程序中,我们向表中添加了两列:IsActive和LastUpdate。IsActive用于代替直接删除记录。LastUpdate是一个时间戳,指示每个记录上次更新的时间。
选择LastUpdate>''
将为您提供所需更改的列表。但数据库可能由多个用户更改。@Malfist-假设您创建了一个带有时间戳的类,以及查找代码/值列表。启动时,加载列表并使用当前时间。稍后,您可以使用缓存的时间戳调用一个proc,如果数据库中的时间戳在您发送的时间之后,它会返回一个新的循环列表。我们使用类似的系统,其中大表具有上次更新的时间戳,并且只有当该时间戳发生变化时才会刷新