我有一个基于.NET 4.5的WCF服务。我将重写服务实现,使用EF6来访问数据库。该服务有许多客户端并处理许多调用。我不能更改服务契约和客户端。使用异步EF操作(如SaveAsync)是否有意义,因为我的服务最终必须返回T而不是Task(因为旧客户端)。
更新
示例操作契约
[OperationContract]
public object AddEntity(object entity)
{
using(var context = new MyContext())
{
context.Add(entity)
var task = context.SaveChangesAsync()
return task.Result;
}
}
即使我使用异步,线程也会被任务结果(task.Result)阻塞。我不能使用await,因为这样操作契约必须更改为返回Task。如何实现这种情况?