如何向本地存储帐户中的表编写 LINQ 查询?

Posted

技术标签:

【中文标题】如何向本地存储帐户中的表编写 LINQ 查询?【英文标题】:How can I write a LINQ query towards a table in the Local Storage Account? 【发布时间】:2021-10-30 20:26:48 【问题描述】:

所需流量:

    HTTP 请求将数据插入到 Azure 存储中的表中。目前使用邮递员和本地主机。注意:这运行成功,这是我正在努力的第 2 步。 当数据行作为数据类型 String 存储在此处的表 (tablename = Test) 中时,我想使用控制台应用程序查询数据。

对于我的两个问题,还请查看我在代码中的注释。

Q1) 当我只在模拟器中本地运行它以连接到我的本地表时, storageConnectionString 应该是什么?

Q2) 我现在如何使用 LINQ 查询表中的所有内容(例如第 15 行)并将其存储在变量中,然后将其打印到控制台窗口?

using System;
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos.Table;

namespace demo

    class Program
    
        static void Main(string[] args)
        
            Console.WriteLine("Table storage sample");

            
            var storageConnectionString = "??"; // What should storageConnectionString be when I'm only running this locally in the emulator?
            var tableName = "Test";

            CloudStorageAccount storageAccount;
            storageAccount = CloudStorageAccount.Parse(storageConnectionString);

            CloudTableClient tableClient = storageAccount.CreateCloudTableClient(new TableClientConfiguration());
            CloudTable table = tableClient.GetTableReference(tableName);
        
    

    //How can I now query all the content in the table or for example row 15 using LINQ and store it in an variable, and print it to console window?




POCO

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos.Table;

namespace LokalTesting.TableEntities

    public class Test: TableEntity
    

        public Test()
        

        
        public Test(string NameId)
        
            PartitionKey = NameId;
            RowKey = NameId;

        
        public string NameId  get; set; 
        public string Status  get; set; 
        public string RoutingId  get; set; 

期望的输出:

-All rows where NameId = Jon

【问题讨论】:

请编辑您的问题并包括 1) 您用于模拟存储表实体的任何 POCO 模型的代码和 2) 您希望通过查询检索的示例数据。 嗨,我现在已经更新了 POCO 和所需的输出数据。 【参考方案1】:

Q1 - 试试"UseDevelopmentStorage=true"

第二季度-

var rows = new List<Test>();
var query = new TableQuery<Test>().Where(TableQuery.GenerateFilterCondition("<propertyName>", QueryComparisons.Equal, propertyValue));

TableContinuationToken continuationToken = null;

do

    var queryResult = await table.ExecuteQuerySegmentedAsync(query, continuationToken);
    rows.AddRange(queryResult);
    continuationToken = queryResult.ContinuationToken;
 while (continuationToken != null);

这里可以生成查询:var query = new TableQuery&lt;Test&gt;().Where(TableQuery.GenerateFilterCondition("NameId", QueryComparisons.Equal, "Jon"));

【讨论】:

对于Microsoft.Azure.Cosmos.Table,我认为不可能使用连接字符串。你能确认一下吗? @GauravMantri 我刚刚使用UseDevelopmentStorage=true 在本地运行了一些代码,并将其连接到本地表。使用Microsoft.Azure.Cosmos.Table

以上是关于如何向本地存储帐户中的表编写 LINQ 查询?的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit:如何使用本地持久存储处理帐户更改?

如何使用 Terraform 将文件从本地计算机复制到存储帐户

在 Entity Framework Core 中,如何使用数据库级别的条件(不是本地 LINQ)查询连接表上的数据?

怎样查看本地添加的elastic 索引

ASP.NET Core 2.0 中 Web API 的本地用户帐户存储

使用 Windows Azure 查询表存储数据