ОБНОВЛЕНИЕ
Вы можете скачать мою демонстрацию на github. И эта статья и официальный документ может помочь вам.
Данные в учетной записи My Storage
Тест почтальона
TestDataController.cs
public class TestDataController : ODataController
{
[EnableQuery]
public IHttpActionResult Get()
{
CloudStorageAccount account = CloudStorageAccount.Parse("DefaultEndpointsProtocol=***x=core.windows.net");
CloudTableClient tableClient = account.CreateCloudTableClient();
//table name
CloudTable table = tableClient.GetTableReference("test");
// all datas in table
IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>().Where(x => x.PartitionKey != "0")
.Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Name = x.Name, Role = x.Role });
// test data
//var result = CreateTestData().AsQueryable();
// real data in `test` table
var a = linqQuery.ToList<CustomerEntity>().AsQueryable();
return Ok(a);
}
public List<TestData> CreateTestData()
{
List<TestData> data = new List<TestData>();
data.Add(new TestData { Id = 1, Name = "Jignesh", Role = "Project Manager" });
data.Add(new TestData { Id = 2, Name = "Tejas", Role = "Architect" });
data.Add(new TestData { Id = 3, Name = "Rakesh", Role = "Lead" });
return data;
}
}
WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapODataServiceRoute("odata", null, GetEdmModel(), new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));
config.EnsureInitialized();
}
private static IEdmModel GetEdmModel()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.Namespace = "WebAPITest";
builder.ContainerName = "DefaultContainer";
builder.EntitySet<TestData>("TestData");
// you can dunamic load entitys later
builder.EntitySet<CustomerEntity>("CustomerEntity");
var edmModel = builder.GetEdmModel();
return edmModel;
}
}
PRIVIOUS
Мне непонятно это решение. Какое приложение вы будете использовать, настольное или веб-приложение?
Если ваше приложение является веб-приложением, вы можете увидеть эту статью. ( официальный документ , пейджинг с OData и ASP . NET Веб-API )
Если ваше приложение не веб-приложение. Я предлагаю вам использовать linq
для решения проблемы.
public static async Task Main(string[] args)
{
Console.WriteLine("Azure Cosmos Table Samples");
CloudStorageAccount account = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=*****fix=core.windows.net");
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("test");
IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>().Where(x => x.PartitionKey != "0")
.Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Name = x.Name });
// skip and take method
var c = linqQuery.ToList<CustomerEntity>().Skip(3).Take(1).ToList<CustomerEntity>();
Console.Read();
}