2016-04-02 11 views
1

Sınıfında bir varlık, bir Azure Tablo Depolama hizmetinden bir varlığı alan bir yöntem yazıyorum. Varlığı TableResult yerine tip User olarak döndürmeliyim. derler aşağıdaki, ama her zaman boş verir:Azure Tablo Depolama Tablosunu Zorunlu Olarak Sönme

var partitionKey = "user"; 

      var retrieveOperation = TableOperation.Retrieve<TableEntity>(partitionKey, userName); 
      var result = _table.Execute(retrieveOperation); 

      if (result == null) 
      { 
       return null; 
      } 

      return result.Result as User; 

Ben Kullanıcıya TableResult gelen dökme nedense çalışmıyor çünkü bu olduğunu varsayarak yaşıyorum. (Kullanıcı) sonucu gibi yayınla. Sonuç, çalışma zamanında bir hatayı atar. Linq kullanarak varlıklar listesinde bir örnek gördüm, ancak nasıl tek bir sonuç yazıyorsunuz? senin varlık UserTableEntity devralır (veya uygular ITableEntity)

cevap

1

ise:

public class User : TableEntity { } 

Eğer sonuç türünü belirtebilirsiniz: sizin durumunuzda Yani

var retrieveOperation = TableOperation.Retrieve<User>(partitionKey, userName); 

, bu gibi görünecektir :

var partitionKey = "user"; 
var retrieveOperation = TableOperation.Retrieve<User>(partitionKey, userName); 
var result = _table.Execute(retrieveOperation); 
if (result == null) 
{ 
    return null; 
} 
return result.Result as User; 

Anot Onun yaklaşımı DynamicTableEntity sınıfını kullanmaktır:

var partitionKey = "user"; 
// The default result type is DynamicTableEntity 
var retrieveOperation = TableOperation.Retrieve(partitionKey, userName); 
var result = _table.Execute(retrieveOperation); 
if (result == null) 
{ 
    return null; 
} 
return result.Result as DynamicTableEntity; 
+0

Teşekkürler Thomas! Bu kayıp anahtardı. Kodun bir kısmını tamamen gözden kaçırmıştım. Aslında Rory Primrose tarafından EntityAdapter kullanıyorum, bu yüzden dönüş türü olarak belirtmem gerekiyor, ama bu hile yaptı. Http://www.neovolve.com/2013/11/18/entity-adapter-for-azure-table-storage/ sayfasına bakın. –

+1

@AndrewBSchultz, bu sınıfı kullanmanıza bile gerek yok, bir DynamicTableEntity sınıfı var: https://msdn.microsoft.com/library/azure/microsoft.windowsazure.storage.table.dynamictableentity.aspx. – Thomas