Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.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# Azure TableEntity EntityResolver用于调用和重用基本解析功能_C#_Azure_Azure Table Storage_Azure Tablequery_Entityresolver - Fatal编程技术网

C# Azure TableEntity EntityResolver用于调用和重用基本解析功能

C# Azure TableEntity EntityResolver用于调用和重用基本解析功能,c#,azure,azure-table-storage,azure-tablequery,entityresolver,C#,Azure,Azure Table Storage,Azure Tablequery,Entityresolver,我正在创建一个自定义EntityResolve,以便在检索azure表记录时,我将在业务对象(TableEntity对象)上设置一组属性,这些属性仅设计用于我的应用程序中,而不会保留回azure表。Azure表上的属性用[IgnoreProperty]修饰 public delegate T EntityResolver<T>(string partitionKey, string rowKey, DateTimeOffset timestamp, IDictionary<st

我正在创建一个自定义EntityResolve,以便在检索azure表记录时,我将在业务对象(TableEntity对象)上设置一组属性,这些属性仅设计用于我的应用程序中,而不会保留回azure表。Azure表上的属性用[IgnoreProperty]修饰

public delegate T EntityResolver<T>(string partitionKey, string rowKey, DateTimeOffset timestamp, IDictionary<string, EntityProperty> properties, string etag);
public委托T EntityResolver(string partitionKey、string rowKey、DateTimeOffset时间戳、IDictionary属性、string etag);
因此,我正在创建EntityResolver,并将委托作为参数传递给ExecuteQuerySegmentedAsync方法,该方法将对表实体进行自定义绑定

但是,我不想编写代码来自定义将每个属性解析为TableEntity。我希望使用所有默认的解析功能,但随后添加一些额外的代码和业务逻辑来设置用于业务逻辑的其他属性


在解析器中,我是否可以利用默认功能或一种基本解析功能,这样我就不必重新编写所有逻辑来做同样的事情,仅仅因为我想向一些新属性添加更多的代码和逻辑?

EntityResolver用于自定义客户端投影,其中的代码都应该是定制的。我还没有找到任何方法可以让这个方法自动解析属性

当我们使用不带解析器的查询方法时,可以实现解析功能。例如:
table.ExecuteQuerySegmented(查询,continuationToken)

获得查询结果后,可以向每个实体添加属性。 像这样:

var entities = new List<CustomEntity>();
foreach (CustomEntity c in table.ExecuteQuerySegmented(query, continuationToken))
{
    c.Data = 100;
    ......
    entities.Add(c);
}
var entities=newlist();
foreach(table.ExecuteQuerySegmented(查询,continuationToken))中的CustomEntity c
{
c、 数据=100;
......
增加(c);
}

EntityResolver用于自定义客户端投影,其中所有代码都应自定义。我还没有找到任何方法可以让这个方法自动解析属性

当我们使用不带解析器的查询方法时,可以实现解析功能。例如:
table.ExecuteQuerySegmented(查询,continuationToken)

获得查询结果后,可以向每个实体添加属性。 像这样:

var entities = new List<CustomEntity>();
foreach (CustomEntity c in table.ExecuteQuerySegmented(query, continuationToken))
{
    c.Data = 100;
    ......
    entities.Add(c);
}
var entities=newlist();
foreach(table.ExecuteQuerySegmented(查询,continuationToken))中的CustomEntity c
{
c、 数据=100;
......
增加(c);
}

是的,我也找不到任何其他方法来使用自定义EntityResolver并调用标准机制来解析,而无需为每个属性重新编写代码。这样做是可能的,但我不想在有其他替代方案的情况下让维护头疼。我的代码看起来已经和你的相似了,但我采取了稍微不同的方法。我为Azure表创建了一个新类,它继承了我已有的现有类。我将新字段所需的业务逻辑封装到新派生TableEntity类的新属性中,然后我只需要用[IgnoreProperty]修饰包含业务逻辑的新属性因此,这些字段不会被提交到AzureTable,现在可以真正被视为只读计算字段。很高兴您已经解决了它,也感谢您的进一步解释:-)没问题!谢谢你的回答!是的,我也找不到任何其他方法来使用自定义EntityResolver并调用标准机制来解析,而无需为每个属性重新编写代码。这样做是可能的,但我不想在有其他替代方案的情况下让维护头疼。我的代码看起来已经和你的相似了,但我采取了稍微不同的方法。我为Azure表创建了一个新类,它继承了我已有的现有类。我将新字段所需的业务逻辑封装到新派生TableEntity类的新属性中,然后我只需要用[IgnoreProperty]修饰包含业务逻辑的新属性因此,这些字段不会被提交到AzureTable,现在可以真正被视为只读计算字段。很高兴您已经解决了它,也感谢您的进一步解释:-)没问题!谢谢你的回答!