实体框架和多线程

Posted

技术标签:

【中文标题】实体框架和多线程【英文标题】:Entity Framework and multithreading 【发布时间】:2011-04-04 05:04:46 【问题描述】:

我有一个处理一些消息的 WCF 服务。我使用 EntityFramework 来检索消息。我将这些消息添加到 ThreadPool 队列中,然后处理它们。处理完所有消息后,我在 Entity Framework 上调用 update 来更新消息的状态。

在此操作期间,我随机收到错误消息 - “在没有首先在具有相同属性名称的同一更改跟踪器上调用 EntityMemberChanging 或 EntityComplexMemberChanging 的情况下调用了 EntityMemberChanged 或 EntityComplexMemberChanged。有关正确报告更改的信息,请参阅实体框架文档。”

当触发特定属性的 ReportPropetychanged 事件时会引发此错误。

任何帮助将不胜感激。

问候

安迪

【问题讨论】:

【参考方案1】:

不要在线程之间共享 ObjectContext —— 或任何附加到它的对象。是documented to be non-thread-safe。

【讨论】:

如何不共享对象上下文?如果它在一个uow中

以上是关于实体框架和多线程的主要内容,如果未能解决你的问题,请参考以下文章

实体框架和多线程

多进程和多线程有啥区别?

线程的概念和多线程模子

python多线程和多进程的实现

python多线程和多进程的实现

Java 线程池和多线程编程 ——线程池理解与创建