C# cosmos在使用表api时不返回任何记录
如何使用表api查询数据库以返回记录 我的文档如下所示:C# cosmos在使用表api时不返回任何记录,c#,.net,azure,visual-studio-2017,azure-cosmosdb,C#,.net,Azure,Visual Studio 2017,Azure Cosmosdb,如何使用表api查询数据库以返回记录 我的文档如下所示: { "id": "069c2612-355a-4659-b680-048b7ef19f5c", "_rid": "3RtVAMJ2mQkBAAAAAAAAAA==", "_self": "dbs/3RtVAA==/colls/3RtVAMJ2mQk=/docs/3RtVAMJ2mQkBAAAAAAAAAA==/", "_etag": "\"00000000-0000-0000-8cc3-3e8f580501d4\"",
{
"id": "069c2612-355a-4659-b680-048b7ef19f5c",
"_rid": "3RtVAMJ2mQkBAAAAAAAAAA==",
"_self": "dbs/3RtVAA==/colls/3RtVAMJ2mQk=/docs/3RtVAMJ2mQkBAAAAAAAAAA==/",
"_etag": "\"00000000-0000-0000-8cc3-3e8f580501d4\"",
"FieldType": "InsuranceCode",
"TranslateFrom": "XTH",
"TranslateTo": "removed",
"SourcePaerty": "TMH",
"DestinationParty": "GE",
"Key": "/TMH/GE/InsuranceCode",
"_attachments": "attachments/",
"_ts": 1544032329
}
我试图使用cosmos的表api简单地读取记录:
public static IEnumerable<Translation> ConnectAndFetch () {
var connectionString = "myconnectionstring;";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse (connectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient ();
CloudTable table = tableClient.GetTableReference ("translationCollection");
TableQuery<Translation> query = new TableQuery<Translation> ();
return table.ExecuteQuery (query);
}
您可以看到0个结果:
它尝试使用下面的表api.net代码在cosmos db表api中查询我的数据。它对我有用
static void Main(string[] args)
{
//CloudTable table = CreateTableAsync("j").Result;
//var result = QueryTableAsync("test").Result;
TableQuerySegment <ResponseEntity> resultE= QueryTableAsync("test").Result;
foreach(ResponseEntity re in resultE)
{
Console.WriteLine("Timestamp: "+re.Timestamp);
Console.WriteLine("------------------------------------------");
}
Console.WriteLine("execute done");
Console.ReadLine();
}
public static async Task<TableQuerySegment<ResponseEntity>> QueryTableAsync(string tableName)
{
string cst = "DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***;TableEndpoint=https://***.table.cosmosdb.azure.com:443/;";
CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(cst);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference(tableName);
var filter = TableQuery.GenerateFilterConditionForDate(
"Timestamp",
QueryComparisons.GreaterThanOrEqual,
DateTimeOffset.Now.AddDays(-10).Date);
Console.WriteLine(filter);
var query = new TableQuery<ResponseEntity>();
var result = await table.ExecuteQuerySegmentedAsync(query, null);
return result;
}
static void Main(字符串[]args)
{
//CloudTable table=CreateTableAsync(“j”)。结果;
//var结果=QueryTableAsync(“测试”)。结果;
TableQuerySegment Result=QueryTableAsync(“测试”).Result;
foreach(结果中的响应)
{
Console.WriteLine(“时间戳:+re.Timestamp”);
Console.WriteLine(“------------------------------------------------”);
}
控制台写入线(“执行完成”);
Console.ReadLine();
}
公共静态异步任务QueryTableAsync(字符串表名)
{
string cst=“DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***;TableEndpoint=https://***.table.cosmosdb.azure.com:443/;”;
CloudStorageAccount-storageAccount=CreateStorageAccountFromConnectionString(cst);
CloudTableClient tableClient=storageAccount.CreateCloudTableClient();
CloudTable=tableClient.GetTableReference(tableName);
var filter=TableQuery.GenerateFilterConditionForDate(
“时间戳”,
查询比较。大于或等于,
DateTimeOffset.Now.AddDays(-10.Date);
控制台写入线(过滤器);
var query=new TableQuery();
var result=wait table.ExecuteQuerySegmentedAsync(查询,null);
返回结果;
}
我的数据:
输出:
根据你的样本数据,我推测你的数据存储在宇宙中,而不是宇宙中。然后是不同的数据库
如果您想查询sql api,您需要参考此sdk:Hi,现在有更新吗?为什么您假设我的数据在cosmos sql api中,而不是cosmos table api中?我不确定你的例子有什么帮助,因为它没有做我正在做的事情,因为我注意到你的示例文档包含_etag、_ts、_self列。据我所知,这些是cosmos db sql api中系统生成的属性。当然,您可以在表api中添加这些列。我的示例不是sql api,而是表api,您试过了吗?
static void Main(string[] args)
{
//CloudTable table = CreateTableAsync("j").Result;
//var result = QueryTableAsync("test").Result;
TableQuerySegment <ResponseEntity> resultE= QueryTableAsync("test").Result;
foreach(ResponseEntity re in resultE)
{
Console.WriteLine("Timestamp: "+re.Timestamp);
Console.WriteLine("------------------------------------------");
}
Console.WriteLine("execute done");
Console.ReadLine();
}
public static async Task<TableQuerySegment<ResponseEntity>> QueryTableAsync(string tableName)
{
string cst = "DefaultEndpointsProtocol=https;AccountName=***;AccountKey=***;TableEndpoint=https://***.table.cosmosdb.azure.com:443/;";
CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(cst);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference(tableName);
var filter = TableQuery.GenerateFilterConditionForDate(
"Timestamp",
QueryComparisons.GreaterThanOrEqual,
DateTimeOffset.Now.AddDays(-10).Date);
Console.WriteLine(filter);
var query = new TableQuery<ResponseEntity>();
var result = await table.ExecuteQuerySegmentedAsync(query, null);
return result;
}