【发布时间】:2022-01-03 08:36:25
【问题描述】:
我可以执行以下操作吗?
DbContext context = ...
var task1 = (
from x in context.blah1 ...
...
select x.alice
).ToListAsync();
var task2 = (
from y in context.blah2 ...
...
select y.bob
).ToListAsync();
task1.Start();
task2.Start();
// Some more stuff here
var result1 = await task1;
var result2 = await task2;
这两个请求是否并行执行?或者这很淘气?如果它很淘气,为什么它很淘气?这会导致运行时异常或其他问题吗?
我读到上下文不是线程安全的,但这里只有一个线程,因为 async/await 不会产生新线程,所以我看不出这是个问题。
如果我希望请求在// Some more stuff here 之前开始运行,是否还需要调用.Start()?还是.ToListAsync() 自己开始执行?
【问题讨论】:
-
docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/… 但是 ef 支持吗?不知道。
-
Start()在这种情况下不是必需的。 -
您需要使用不同的上下文实例才能使其工作,请参阅stackoverflow.com/questions/41749896/…
标签: c# .net entity-framework async-await