繁体   English   中英

在每次调用时初始化实体框架objectcontext

[英]initializing the entity framework objectcontext on every call

我有一个使用Entity框架作为数据访问层的Web应用程序。 现在我正在初始化每个请求从ObjectContext继承的实体类。

我只是想知道从性能的角度来看是否存在任何缺点或后果。 缓存此对象是否更好?

请注意,我有大型edmx文件,有些包含大约50个表

每个请求初始化一个ObjectContext可能是在Web应用程序中实现EF的最常用方法。 这样做不是性能问题,初始化非常便宜。 ObjectContext是EF的工作单元模式的实现,因此将数据库中的对话封装在单个工作单元中是一种很好的做法。 跨请求缓存ObjectContext可能会有问题,因为在Web应用程序中不能轻易处理长时间运行的数据库对话,因为您永远不知道来自给定客户端的下一个请求何时到达。

在Web应用程序中处理Entity Framework时,建议使用此方法。

但是,如果可以将表划分为独立区域,则可以将包含50个表的上下文分区为几个上下文。 然后,您将更容易管理上下文。

不建议缓存上下文。 ObjectContext不是线程安全的。 IT也将违反工作单元模式。 这将导致不必要的行为,例如在单个事务中提交多个用户的更改。

每个请求或操作使用新的上下文实例是必须的 对此没有性能影响,因为元数据(来自EDMX)仅加载和编译一次(第一次需要它们),之后元数据将重用于同一上下文的所有实例,直到应用程序池回收。 您甚至可以通过预编译元数据来加速初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM