实体框架是 Microsoft 推出的流行的 .NET 对象关系映射框架。它使您能够通过域对象处理关系数据。而且,它消除了您原本需要编写的大部分数据库持久性代码的需要。
实体框架的流行导致它在性能和可扩展性至关重要的高事务应用程序中频繁使用。但是,在大多数高事务处理情况下,数据库很快就会成为瓶颈。这是因为与应用程序层不同,您可以根据需要扩展添加更多应用程序服务器,而数据库层则无法执行相同的操作。
实现这种可扩展性的唯一方法是使用分布式缓存,例如 NCache. NCache 是适用于 .NET 应用程序的速度极快且可扩展的分布式缓存。它允许您缓存应用程序数据,减少昂贵的数据库访问,并提高应用程序性能和可扩展性。
虽然Entity Framework没有提供Second Level(2nd Level)Cache提供者模型, NCache 已经为实体框架实现了一个自定义 ADO.NET 提供程序,使用该提供程序 NCache 可以插入并缓存实体框架查询的结果。这允许您开始在实体框架应用程序中使用分布式缓存,而无需进行任何代码更改。
查看文件如果您的实体框架应用程序在多服务器环境中运行,那么您需要一个分布式缓存作为实体框架二级缓存。 和, NCache 是用于多服务器配置的理想实体框架二级缓存,您应该出于以下原因使用它:
关于使用的最好的事情 NCache 使用 Entity Framework 是您不需要编程。 您只需修改应用程序的配置文件并指定 NCache 作为您的二级缓存提供者。 以下是 app.config 更改的示例:
<interceptors>
<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor,
Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>
自 NCache 实体框架二级缓存提供程序作为自定义 ADO.NET 提供程序插入,它允许您在分析模式下运行它,在该模式下它记录您的应用程序向实体框架发出的所有不同查询。 这些查询与在此分析模式期间调用此查询的次数一起记录在一个文件中。 下面是一个例子:
<analysis-report>
<!--Call-count = 21-->
<query query-text="" ["SELECT FROM Products"] |
[stored-procedure-name = ""]
caching = "true"
expiration-type="absolute" |
sliding = ""
expiration-time="180"
dbsyncdependency = "true"/>
</analysis-report>
这使您可以确定要缓存哪些查询以及缓存多长时间。 您还可以为部分或全部查询指定数据库同步。
通过插入 NCache 实体框架二级缓存提供程序通过 app.config 更改,您将为您的应用程序获得企业级分布式缓存。 这里有一些功能 NCache 提供实体框架应用程序。
虽然,使用 NCache 由于实体框架二级缓存非常快速和简单,它只为您提供一组有限的 NCache 特征。这样做的原因是 NCache 受以下事实的约束:它作为自定义 ADO.NET 提供程序插入,并且必须在 SQL 查询级别进行处理。有无数 NCache 如果您决定使用您将无法使用的功能 NCache 作为实体框架二级缓存提供者。
您的替代方法是使用 NCache 直接从实体框架应用程序中进行 NCache 像所有其他非实体框架 .NET 应用程序一样进行 API 调用。尽管走这条路需要少量的编程工作,但您可能会认为好处超过了额外的编程工作。
以下是如果您将其用作实体框架二级缓存与使用它时您会错过的功能列表 NCache 直接从您的应用程序。