![]() |
1
4
我认为您应该经常处理上下文,并在每次轮询数据库时创建一个新的上下文。 主要原因是,除非禁用对象跟踪(实际上只适用于只读操作),否则随着时间的推移,上下文会越来越大,每次连续的轮询操作都会将更多数据加载到上下文的缓存中。除了这导致的内存增加之外,SaveChanges()会随着ObjectContext在附加到它的对象中查找更改而变慢。 如果由于任何原因导致连接丢失,您也将很难将新连接与上下文关联起来。无论如何,根据我自己的经验,它不会减慢任何速度,在第一个EF上下文对象之后构造任何EF上下文对象都很快,因为模型是在第一次加载时缓存的。 我不会担心每2秒进行一次投票。这对我来说似乎完全合理。 顺便说一句,如果您使用的是SQL Server,则可以使用SqlDependency在数据更改时触发事件,但轮询是最可靠的选项。 http://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspx 或者,如果您坚决反对轮询,您可以考虑使用像RabbitMQ这样的MessageBroker系统,并更新应用程序以使用它,但要做好准备,在实施基础设施的几周内会损失一些时间。 |
![]() |
Imad · Linq扩展方法没有使用Object类的Equals 1 年前 |
![]() |
user8512043 · 根据每个元素中的数字对列表进行排序 2 年前 |
![]() |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
![]() |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
![]() |
Drago · Linq通过比较Id和具有Id的对象列表来查询获取列表 2 年前 |