我有一个使用Entity Framework作为数据访问层的Web应用程序。 现在我正在每个请求上初始化继承自ObjectContext的实体类。
我想知道从性能角度来看这样做是否有任何缺点或后果。是将此对象缓存更好呢?
请注意,我有大型edmx文件,其中一些包含约50个表。
我有一个使用Entity Framework作为数据访问层的Web应用程序。 现在我正在每个请求上初始化继承自ObjectContext的实体类。
我想知道从性能角度来看这样做是否有任何缺点或后果。是将此对象缓存更好呢?
请注意,我有大型edmx文件,其中一些包含约50个表。
在Web应用程序中实现EF,每个请求初始化一个ObjectContext可能是最常见的方法。这样做并不会影响性能,因为初始化非常便宜。 ObjectContext是EF实现的工作单元模式,因此将与数据库的交互封装在单个工作单元中是一种良好的实践。但是,跨请求缓存ObjectContext可能会有问题,因为长时间运行的数据库交互在Web应用程序中很难处理,因为您永远不知道来自给定客户端的下一个请求何时到达。
在Web应用程序中处理Entity Framework时,这是推荐的做法。
然而,如果您可以将您的50个表分成独立的区域,那么您可以将包含它们的上下文分成几个上下文。这样,您就可以更轻松地管理这些上下文。
不推荐缓存上下文。ObjectContext不是线程安全的。这也会违反工作单元模式。这将导致不必要的行为,例如在单个事务中提交多个用户的更改。