错误信息如下:
A second operation started on this context before a previous asynchronous operation completed. Use 'await' to ensure that any asynchronous operations have completed before calling another method on this context. Any instance members are not guaranteed to be thread safe.
请问如何解决这个问题?
是在这段代码中出现这个问题的:
foreach (var doc in docs) { //_tagService中用到了EF var tags = await _tagService.GetTagsString(doc.Id); }
问题是发生在这段代码中:
foreach (var doc in docs) { var tags = await _tagService.GetTagsString(doc.Id); }
在_tagService中用到了EF,_tagService中的DbContext实例是通过_tagService的构造函数注入的,所以在foreach循环中始终用的是同一个DbContext实例,而提问中的异常就是因为这个引发的。
只要避免在多次await时使用同一个DbContext实例,就能避开这个问题。
自问自答 还不要园豆 给赞~
@小刺猬001: 规则所限,园豆不能给自己
@dudu: 原来如此。
帮园长搜到了http://www.cnblogs.com/xishuai/p/ef-dbcontext-thread-safe.html 话说我没用过await。。。
30个豆 (*@ο@*) 哇~