2017-05-18 27 views
0

我想基于分区键和行键替换我的表上的实体成功,但是当我尝试转换它时,它会引发无效的转换异常。 我看了看MSDN文档,那就是删除正确的方式,甚至提出一定要遵循指南,创建一个实体未能将动态表实体投射到自定义实体Azure表存储

实体属性,你想在一个表来存储必须的公共属性键入,并支持获取和设置值。此外,你的实体类型必须公开一个参数的构造函数

这是我的课

public class BasicAsset : TableEntity 
{ 
    public BasicAsset() 
    { 
    } 

    public BasicAsset(string name) 
    { 
     Name = name; 
    } 


    [IsFilterable, IsSortable, IsSearchable] 
    public string Name { get; set; } 

    [IsFilterable, IsSortable] 
    public int Version { get; set; } 
} 

这是我在异常

TableOperation retreiveOperation = TableOperation.Retrieve("Orginization", result.Results[0].Document.RowKey); 
TableResult toDelete = await table.ExecuteAsync(retreiveOperation); 
BasicAsset toReplaceAsset = (BasicAsset) toDelete.Result; 
//Change what is new here 
toReplaceAsset.Version = asset.Version; 
TableOperation replaceOperation = TableOperation.Replace(toReplaceAsset); 

错误

的点码
e = {System.InvalidCastException: Unable to cast object of type 'Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity' to type 'AssetSynch.Models.BasicAsset'. 
    at AssetSynch.Controllers.TableStorageViewFunctions.<>c__DisplayClass0_0.<<UpdateLattestAssetVe... 

我在这里失踪了什么?

回答

5

而不是Retrieve尝试使用Retrieve<BasicAsset>,或者你可以简单地调用ExecuteQuery<BasicAsset>

+0

完美的感谢! – Harry