对Entity Framework应用二级缓存

二级缓存(Second Level Caching)是个Entity Framework中尚不能开箱即用的功能。在一篇MSDN文章“用Entity Framework和AppFabric实现二级缓存”中,Julie Lerman展示了如何通过在Entity Framework中利用像Microsoft AppFabric等缓存服务来实现二级缓存。

我们为什么需要二级缓存?

EF的最大好处之一是其拥有根据在上下文中找到的状态信息自动生成数据库持久化命令(插入、更新和删除)的能力。但是如果那些状态信息不可用,那么当调用SaveChanges命令时EF就会无所事事。

二级缓存有助于解决此类问题。这些缓存位于事务之外——常常是应用程序之外——因此可用于任何上下文实例。

Julie扩展了由Jarek Kowalski设计的EF Caching Provider类,从而使得此类可与Windows Server AppFabric协同工作。她修改了适配器类,以便此类可以调用AppFabric的客户端API,她还扩展ObjectContext类。你可以从她的文章中下载代码示例从而学到更多知识。

通过缓存常用查询数据从而避免频繁命中数据库,缓存二级缓存同样有助于提高高事务性应用程序(highly transactional applications)的性能。对于需要与像Entity Framework等ORM框架一起使用的缓存解决方案而言,Microsoft AppFabric并非唯一的选择——在对代码进行适当地修改后,例如memcached等其他框架同样可用于相同的目的。

ADO.NET Entity Framework是一款来自微软的对象-关系映射器。最近发布的EF 4.1具有一些有趣的功能,例如Validation(验证)、Spatial data(空间数据)、Enums(枚举)及更多功能。

查看英文原文:Second Level Caching with Entity Framework

译者 高翌翔 基于.NET平台进行Web应用程序设计、开发,关注敏捷开发和架构设计,及各种提高代码可维护性的最佳实践。

This entry was posted in DB. Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s