天蓝色表存储不添加新字段

Posted

技术标签:

【中文标题】天蓝色表存储不添加新字段【英文标题】:azure table storage doesn't add new fields 【发布时间】:2015-11-17 04:32:13 【问题描述】:

我在 Azure 表存储 中创建了一个表,并使用从 TableEntity 派生的 Entity 类添加了一些记录。在此之后,我向该类添加了两个属性并尝试插入更多记录,但看起来新字段没有添加到存储中,只有旧字段被写入和读取。 我错过了什么吗?我必须做更多的事情来改变表格的布局?

【问题讨论】:

【参考方案1】:

首先,我想确保我了解您的情况。您通过添加另外两个属性来修改现有实体类,然后在表中添加新实体。您无法看到两个新添加的属性,但只能更新/检索旧属性。如果这是您尝试实施的方案,请检查以下内容。您应该能够添加新属性。

    在您从TableEntity 类派生实体的类中添加新属性。 Optional1Optional2 是您尝试添加的新属性。

     public class CustomerEntity : TableEntity
     
            public CustomerEntity()  
            public CustomerEntity(string lastName, string firstName)
            
                this.PartitionKey = lastName;
                this.RowKey = firstName;
            
    
            public string Email  get; set; 
            public string CellPhoneNumber  get; set; 
    
            public string Optional1  get; set; 
            public string Optional2  get; set;     
        
    
    

    确保设置了 Optional1Optional2 值。请参阅下面的示例代码。

    var customer = new CustomerEntity(LastName, FirstName)
     
        Email = Email,
        CellPhoneNumber = cellPhoneNumber,
        Optional1 = optional1,
        Optional2 = optional2,
    
    
    TableOperation insertOperation = TableOperation.Insert(customer);
    TableName.Execute(insertOperation);
    

注意:以上代码我没有编译,可能有错别字等

谢谢, 昂

【讨论】:

【参考方案2】:

感谢您提供的信息,但最后我发现问题是另一个问题。我使用 Vs 在类中创建了属性,并且这样做 Vs 创建的属性添加了一个内部设置器。 在这种情况下看起来像这样 Azure 存储客户端只是忽略这些属性,不创建不写入和不读取的字段,根本没有给出任何错误。 删除了internal关键字开始正常工作。

【讨论】:

谢谢你拯救了我的一天,我遇到了类似的问题。就我而言,错误是我根本没有创建 setter。只有吸气剂。【参考方案3】:

就我而言,我定义的字段可以为空。即使我为它们提供了值,仍然没有创建这些字段。必须使它们不可为空,以便可以创建字段。

【讨论】:

以上是关于天蓝色表存储不添加新字段的主要内容,如果未能解决你的问题,请参考以下文章

用java在天蓝色表存储中存储复杂数据类型的正确方法是啥?

与 T-sql 的 LIKE 命令等效的天蓝色表存储查询是啥?

如何限制天蓝色函数的规模

天蓝色缓存性能不佳

从天蓝色表中读取行时为空值

天蓝色 blob 存储实验