Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# cosmos在使用表api时不返回任何记录_C#_.net_Azure_Visual Studio 2017_Azure Cosmosdb - Fatal编程技术网

C# cosmos在使用表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\"",

如何使用表api查询数据库以返回记录

我的文档如下所示:

{
  "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;

    }