如何使用异步方法实现WCF数据服务上下文?

时间:2014-08-26 22:51:23

标签: c# .net async-await odata wcf-data-services

我正在试验WCF Data Services(不要与普通的WCF混淆),我想让我的服务器方法异步。框架将端点方法连接到数据上下文操作所使用的反射量对我来说隐藏得太多了,我无法找到使服务端点方法异步的方法。

例如,请考虑以下返回IQueryable<Customer>的上下文。

public class StaticCustomerContext
{
    public IQueryable<Customer> Customers
    {
        get
        {
            IQueryable<Customer> customers = new[]
            {
                new Customer { CustomerID = 100, Name = "Domino's Pizza" },
                new Customer { CustomerID = 200, Name = "Sony" },
                new Customer { CustomerID = 300, Name = "Target" },
                new Customer { CustomerID = 400, Name = "Microsoft Corporation" }
            }.AsQueryable();

            return customers;
        }
    }
}

服务入口点很简单:

public class MyWcfDataService : DataService<StaticCustomerContext>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }
}

现在,如何使检索Customers Feed的实现异步?如果我更改上下文中的Customers属性以返回Task<IQueryable<Customer>>的实例,那么我在InitializeServiceMethod中会收到一个例外情况,指出无法找到Customers

有没有办法自定义服务入口点来处理Task<IQueryable<T>>而不是IQueryable<T>

0 个答案:

没有答案