Azure表存储不会在实体定义中保存所有内容

这与我计划保存在 Azure 表存储(ATS)中的实体相同:

这与我计划保存在 Azure 表存储(ATS)中的实体相同:

public class CarEntity : TableEntity
{
    public CarEntity(string objPartitionKey, string objRowKey)
    {
        this.PartitionKey = objPartitionKey;
        this.RowKey = objRowKey;
    }
    public string TableName
    {
        get { return "EntityTableName"; }
    }
    public string Property1 { get; set; }
    // and this goes on
    public string Property60 { get; set; }
}

记录的填充取决于用户将保存的选择(例如,这是一个 CarEntity-如果用户订购的车轮,属性 WheelSize 和 WheelQuantity 将被填充,如果用户要求重新绘制,RepaintingColor 将被填充等等)。

我知道每个实体有 1MB 的限制,但考虑到我们所做的计算,它与 1MB 的限制相去甚远。

任何帮助为什么即使相应地保存属性也不会出现列?我的保存函数定义如下:

    public static CarEntity CarInsertOrReplace(CarEntity entity)        
    {
        if (entity == null)
        {
            throw new ArgumentNullException("entity");
        }
        var table = SetupTable(entity.TableName);
        table.CreateIfNotExists();
        TableOperation insertOrMergeOperation = TableOperation.InsertOrReplace(entity);
        TableResult result = table.Execute(insertOrMergeOperation);
        CarEntity objEntity = result.Result as CarEntity;
        return objEntity;
    }
1

听起来你的 Entity 的属性会根据使用情况而有所不同。可能发生的情况是 Azure Table Storage 只为非 null 的属性创建列 (有值设置)。所以你只会看到为已设置的属性创建的列。

0

听起来好像 Table Storage 正在按照您的要求执行,但不一定像您期望的那样。正如 @ Paul Fryer 所回答的那样,ATS 不会存储空值,并且由于您不这样做(通过引用代码)初始化 CarEntity 属性,默认情况下它们将为空。因此,只有用户设置的属性将保存到表中。

https://msdn.microsoft.com/en-us/library/azure/hh452242.aspx# 备注:

如果使用“插入或替换实体”操作替换实体,则如果新实体未定义上一个实体中的任何属性,则这些属性将被删除。具有空值的属性也将被删除。

此外,从您的代码

TableResult result = table.Execute(insertOrMergeOperation);
CarEntity objEntity = result.Result as CarEntity;

结果将包含 TableOperation 而不是完整实体的副本,以防这是您所期望的。

这种情况可能是使用例如 SQL 表(其中未给定值的字段具有数据库默认值或默认值为 null)与 Azure 表模型(其中未给定值的字段不存在)之间的差异。您只需要在读取 / 写入所选存储时注意该差异。

如果您需要将所有字段保存到表中,则为每个属性提供默认值,例如 string.Empty

0

如果字符串为 null 或空,那么它根本不会保存属性。你没有做错任何事情,当你使用它们时,你只需要在设计中考虑这一点。

如果您使用的是 TableEntity,那么它会为您执行空 / 空检查。如果您使用的是 DynamicTableEntity,那么您必须自己进行检查。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(874)
使用Discord.Js更改不和谐公会的图标
上一篇
随机弹出式调查(pop up survey on website)
下一篇

相关推荐

  • 经典软件:如何从经典VM分离Azure经典 NSG

    关于经典软件的问题,在nsg中经常遇到,在 azure classic 中,我有一个连接到经典虚拟机的经典网络安全组。我无法删除 NSG,因为它与 VM 关联,但我没有看到任何从 VM 分离 NSG 的选项,也没有找到从 VM 分离 NSG 的 PS 或 CLI 命令。是否需要删除 VM 才能删除 NSG?…

    2022-12-20 12:20:05
    0 97 10
  • Azure表存储不会在实体定义中保存所有内容

    这与我计划保存在 Azure 表存储(ATS)中的实体相同:…

    2022-12-25 10:11:12
    0 94 97

发表评论

登录 后才能评论

评论列表(47条)