如今,数据层与数据库异步交互是很常见的:
public async Task<Customer> GetCustomer(int id)
{
using (db = new AppDbContext())
{
return await db.Customers.FindAsync(id);
}
}
通过这种技术,据我了解,所有调用方法(一直到UI层)都必须使用async关键字进行定义。因此,您最终得到一个应用程序,其中最终与数据库交互的每个方法或函数都是异步方法。
这似乎非常困惑,并且在了解数据层内部实现细节的情况下“污染”了所有应用程序层。
我是在误解某件事,还是这仅仅是要做的事情?
最佳答案
不,你是对的。这只是您要做的事情。
是的,这些实现细节确实会泄漏,这是不幸的。这是绝大多数计算机语言如何工作的现实。
我倾向于将async
详细信息与IDisposable
详细信息进行比较。如果一个类实现IDisposable
,则其包含(拥有)的类应该等等,等等。但是,一个类是否拥有资源应该确实是一个实现细节。