我有这个界面:
public interface ISign
{
Task<bool> IsRegisteredCopy();
}
实施它:
public class Sign : ISign
{
TabibContext context = new TabibContext();
public Task<bool> IsRegisteredCopy()
{
return context.Doctors.Any();
}
}
所以我需要从Any
方法中返回不可用的任务!
答案 0 :(得分:6)
实体框架有System.Data.Entity
命名空间中可以使用的async extensions。所以你可以这样做:
using System.Data.Entity;
public Task<bool> IsRegisteredCopy()
{
return context.Doctors.AnyAsync();
}
答案 1 :(得分:1)
你有几种方法可以做到这一点。其中一个是Matthew Watson的方式(return Task.Run(() => context.Doctors.Any());
)。这不是一个好习惯(看看Stephen Cleary在这个question中的答案和链接。)
这是另一种不需要您实际运行任务的方法。您可以在没有这样的任务的情况下返回任务:
return Task.FromResult(context.Doctors.Any());
这样,您可以在不触发所有任务的情况下返回值。如果您的方法中没有任务,那么这是一种更好的做法。
注意:在最新版本的Entity Framework中,您有一个AnyAsync
方法甚至更好:
public async Task<bool> IsRegisteredCopy()
{
return await context.Doctors.AnyAsync();
}
您需要使用以下内容添加:System.Data.Entity
;