实体框架和多线程
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中以上是关于实体框架和多线程的主要内容,如果未能解决你的问题,请参考以下文章