使用我的存儲庫,所有實施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