使用我的存储库,所有实施IRespository有一个大的代码库,我实现这些方法异步版本:迁移到异步:库
T Find(id);
Task<T> FindAsync(id);
...etc...
有几种类型的存储库。最简单的方法是基于一个不可变的集合,其中实体的大小足够小,可以从数据库中一次加载它们。这种负载在任何人第一次调用任何IRepository方法时发生。例如,Find(4)会在未发生负载时触发负载。
我用懒惰< T>实现了这个。非常方便,并已工作多年。
我无法在异步版上使用冷火鸡,所以我必须在同步版本旁边添加异步版。我的问题是,我不知道哪个将被首先调用 - 在存储库上的同步或异步方法。
我不知道如何申报我的懒惰 - 如果我去做了,因为我一直在做它,
Lazy<MyCollection<T>>
然后加载时FindAsync()首次调用它不会是异步。在另一方面,如果我去
Lazy<Task<MyCollection<T>>>
这将是伟大的FindAsync(),但如何将同步方法触发初始加载W/O有关死锁调用Task.Result触犯克利先生的警告的运行?
谢谢你的时间!
我希望你能看到这个并称重 - 这真的很有帮助,谢谢!也真的很享受你的书! – n8wrl