目前,数据层与数据库异步交互是很常见的:
public async Task<Customer> GetCustomer(int id)
{
using (db = new AppDbContext())
{
return await db.Customers.FindAsync(id);
}
}
使用这种技术,我的理解是所有调用方法,一直到UI层,然后也必须使用async关键字定义。因此,您最终会得到一个应用程序,其中最终与数据库交互的每个方法或函数都是异步方法。
这似乎非常混乱,污染&#34;所有应用层都了解数据层内的实现细节。
我误解了什么,或者这只是一个人必须做的事情?
答案 0 :(得分:5)
我误解了什么,或者这只是一个人必须做的事情?
不,你是对的。这只是你必须要做的事情。
这似乎非常混乱,污染&#34;所有应用层都了解数据层内的实现细节。
是的,这些实施细节确实泄漏了,这很不幸。它只是绝大多数计算机语言如何运作的现实。
我倾向于将async
详细信息与IDisposable
详细信息进行比较。如果一个类实现IDisposable
,那么它包含(拥有)类应该等等。但是一个类是否拥有资源应该真的是一个实现细节。