我目前正在使用EF4和WCF處理在不同渠道(電子郵件,私人消息,應用程序消息)中傳遞的數千條消息的調度程序服務。並行訪問EF4實體(並行+ EF4)
要儘量加快信息調度我想要使用的Parallels:
Parallel.ForEach(currentMessageList, m =>
{
Processors.DispatcherWrapper.Dispatch(m, m.unfChannels.AgentName, m.unfChannels.AgentParameters);
}
);
我的調度方法使用反射來匹配通道配置方法,並同時處理每封郵件,但我有很大的問題,嘗試更新線程內EF對象時,我做的SaveChanges()到全球實體(它的初始化上的Application_Start)
問題有各種口味的:
- 空對象引用
- 列表項屬性是對象的關鍵信息的一部分,無法修改。
- 底層提供程序在打開時失敗。
- 新事務是不允許的,因爲會話中還有其他線程在運行。 (強制連接打開後如果關閉)
問題是如果EF4是線程安全的以實現這種情況? 我的方法是讓全球實體獲得最佳解決方案,還是應該按EF4初始化進行每項任務?
任何幫助是受歡迎的,我已經失去了2個小時試圖找出一個可能的解決方法。
嘗試初始化一個新的Entitie,並得到:一個EdmType不能映射到CLR類多次。 EdmType''被映射多次。 – hmf 2010-09-22 15:02:49
ObjectContext不是線程安全的。 http://stackoverflow.com/questions/3258357/good-advices-to-use-ef-in-a-multithread-program – 2010-09-22 17:27:12