gpt4 book ai didi

c# - 缓存 Entity Framework 数据并跟踪其变化?

转载 作者:太空狗 更新时间:2023-10-29 23:33:32 24 4
gpt4 key购买 nike

我想要的在概念上非常简单,但我不知道如何最好地实现这样的东西。

在我的网络应用程序中,我有访问存储库的服务,这些存储库访问与 SQL Server 数据库交互的 EF。所有这些都在每个网络请求中实例化一次。

我想在存储库和 EF(或服务和存储库?)之间有一个额外的层,它静态地跟踪从数据库中提取和推送到数据库的对象。

假设数据库访问仅通过应用程序完成,我们的目标将是我们知道一个事实,即除非某些存储库访问 EF 并提交更改,否则对象集实际上并没有改变。

一个例子是:

存储库调用方法 GetAllCarrots();

GetAllCarrots()在检索 List<Carrot> 的 SQL Server 上执行查询,如果中间没有其他事情发生,我想阻止每次在 SQL Server 上实际进行此查询(不管它是在不同的 Web 请求上,我希望能够处理这种情况)

现在,如果调用 BuyCarrot()添加 Carrot到表,然后我希望它使 Carrot 的静态缓存无效s,这将使GetAllCarrots();需要再次查询数据库。

有哪些关于数据库缓存的好资源?

最佳答案

您可以使用 LinqToCache为此。

它允许您在存储库中使用以下代码:

var queryTags = from t in ctx.Tags select t;
var tags = queryTags.AsCached("Tags");
foreach (Tag t in tags)
{
...
}

这个想法是你使用 SqlDependency在查询结果更改时收到通知。只要结果不变,您就可以缓存它。

LinqToCache 跟踪您的查询并在查询时返回缓存的数据。当从 SqlServer 收到通知时,缓存将被重置。

关于c# - 缓存 Entity Framework 数据并跟踪其变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9607896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com