我正在使用EF 6.0-alpha3,以便可以在EF中使用异步方法。
我的存储库如下:
public class EntityRepository<E> : IRepository<E> where E : class
{
public async virtual Task Save()
{
await context.SaveChangesAsync();
}
}
现在我的业务层如下:
public abstract class ApplicationBCBase<E> : IEntityBC<E>
{
public async virtual Task Save()
{
await repository.Save();
}
}
当然,在我的用户界面中,调用时遵循相同的模式是必要的。
这是:
- 必要的吗?
- 对性能有负面影响吗?
- 只是个人喜好吗?
即使不在单独的层/项目中使用,如果我在同一类中调用嵌套方法,同样的问题也适用:
private async Task<string> Dosomething1()
{
//other stuff
...
return await Dosomething2();
}
private async Task<string> Dosomething2()
{
//other stuff
...
return await Dosomething3();
}
private async Task<string> Dosomething3()
{
//other stuff
...
return await Task.Run(() => "");
}
async
以添加错误处理。如果您等待该任务,则可以仅将调用包装在try/catch
块中,而无需添加提供的任务的延续。 - ServytextBox.Text = await Method()
- 但无论Method
是异步的还是只是从其他地方返回任务都没有关系。 - Jon Skeet