2017-05-18 2 views
0

パーティションキーとローキーに基づいてエンティティを置換しようとしましたが、エンティティを正常に取得しましたが、キャストしようとすると無効キャスト例外がスローされます。 私はMSDNのドキュメントを見て、それもあなたがテーブルに保存したいダイナミックテーブルエンティティをカスタムEntity 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

代わりのRetrieveRetrieve<BasicAsset>を使用してみてください、代わりにあなたは、単にExecuteQuery<BasicAsset>

+0

パーフェクト感謝を呼び出すことができます! – Harry

関連する問題