给定CloudTableQuery / DataServiceQuery,返回关联的TableServiceContext

时间:2012-04-01 12:58:22

标签: c# azure wcf-data-services azure-table-storage

如果有CloudTableQuery和/或DataServiceQuery,是否可以获得产生查询的TableServiceContext

1 个答案:

答案 0 :(得分:2)

是的,这可以使用反射。这是一个扩展方法,它将为每个IQueryable(支持CloudTableQuery和DataServiceQuery)执行此操作:

using System;
using System.Linq;
using System.Reflection;

using Microsoft.WindowsAzure.StorageClient;

public static class DataServiceQueryExtensions
{
    public static TableServiceContext GetTableServiceContext<TType>(this IQueryable<TType> query)
    {
        var contextField = query.Provider.GetType().GetField("Context", (BindingFlags.Instance | BindingFlags.NonPublic));
        if (contextField == null)
            return null;
        else
            return contextField.GetValue(query.Provider) as TableServiceContext;
    }
}

希望这有帮助。

Sandrino