我现在正在学习EF,并且有一个关于ObjectContext的问题:
当我访问数据库时,应该为每个查询(函数)创建ObjectContext的实例吗?
或者最好创建一次(单例)并重新使用它?
在EF之前,我正在使用企业库数据访问块并创建DataAccess函数的数据实例…
绝对为每个
查询.这是一个轻量级的对象,因此每次需要时都不会产生很多成本.
此外,保持ObjectContext的时间越长,当您针对它运行查询时,它将包含的缓存对象越多.这可能会导致内存问题.因此,将ObjectContext作为单例,是一个特别糟糕的主意.随着您的应用程序被使用,您将在单一ObjectContext中加载越来越多的实体,直到最后将整个数据库存储在内存中(除非您在不再需要时分离实体).
然后有一个可维护性问题.有一天,您尝试追踪一个错误,但无法确定导致数据加载的位置.