【发布时间】:2011-08-14 20:10:01
【问题描述】:
我有一些支持级联更新/删除的相关实体(用户、用户角色、用户和角色的权限)。
应用服务器经常使用它,我需要实现对它的快速访问。为此,我会将其放入应用程序缓存中。
问题是在对该数据执行级联操作时如何在数据库和缓存之间提供同步?例如,如果我删除某个角色,我还需要删除所有该角色权限,或者如果我删除一个用户,我需要删除其所有角色及其权限。
我看到了很多方法来支持缓存中的实际数据,但我也看到了一些缺点。请告诉我什么是最好的解决方案。
- 所有级联操作都是在数据库中使用触发器进行的。应用程序通过
SqlCacheDependency机制接收通知。问题:当服务器负载很重时怎么办?通知会延迟吗?数据库/应用程序服务器是否会花费太多成本来提供许多精确的依赖项,例如“select SomeField from DataTable where id = @x”? - 所有级联操作都在应用程序的业务层进行。每个数据库更新/删除操作之后都是缓存失效操作。问题:双倍的逻辑和高网络流量(许多更新而不是一个)
- DB 中的级联操作,使用
CacheDependency在缓存中级联失效。问题:双重逻辑。
什么是好的解决方案? 谢谢!
【问题讨论】:
-
> 2) 所有级联操作都在应用的业务层进行>>我是说数据访问层
-
Entity Framework 是否提供了这样的功能,所以它也会自动进行级联更改?
标签: c# sql-server caching