【发布时间】:2018-03-29 22:21:39
【问题描述】:
我有一个从数据库返回数据的方法
public Task<List<T>> GetAsync(int someId)
{
return dbSet
.Where(x => x.Id == someId)
.ToListAsync();
}
我有一个字典,通过某个键存储任务
Dictionary<int, Task<List<T>>> SomeDictionary { get; set; }
在其他地方,我得到了任务并将其放入字典中
var someTask = repo.GetAsync(someId);
someInstance.AddInDictionary(key, someTask);
然后我得到任务,等待它得到结果
var task = someInstance.GetFromDictionary(key);
List<T> result = await task;
所以我的问题是: 1、IQueryable在哪里翻译成sql查询并在数据库中执行: 当我在 repo 中调用方法时
var someTask = repo.GetAsync(someId);
-或者当我等待任务时
List<T> result = await task;
2。在字典中,当我存储任务时
Dictionary<int, Task<List<T>>> SomeDictionary { get; set; }
...我是只存储一个应该返回结果的操作,还是将一个操作与实际结果一起存储?换句话说,保存任务而不是保存列表会节省内存吗?
提前致谢。
【问题讨论】:
-
我的猜测是
ToListAsync(),和ToList()一样 -
你想知道什么时候执行的目的是什么?
标签: c# entity-framework asynchronous task iqueryable