Azure表存储,table.Execute返回无效实体

时间:2013-04-10 19:44:26

标签: c# .net azure azure-table-storage

我是azure表的新手,我只想创建表,插入项目并将其取回。

我有实体类:

public class UserEntity : TableEntity
{
    public string ID { get; set; }

    public string Name { get; set; }

    public string Surname { get; set; }

    public string Email { get; set; }

    public DateTime RegistrationTime { get; set; }

    public string Password { get; set; }

    public int Country { get; set; }


    public UserEntity() { }

    public UserEntity(MyUser user)
    {
        this.ID = user.ID.ToString();
        this.Name = user.Name;
        this.Surname = user.Surname;
        this.Email = user.Email;
        this.RegistrationTime = user.RegistrationTime;
        this.Password = user.Password.ToString();
        this.Country = user.Country;

        this.PartitionKey = this.Country.ToString();
        this.RowKey = this.Email;
    }
}

创建表我使用函数:

public static void CreateTable()
    {
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Settings.Azure_Storage_ConnectionString);
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
        CloudTable table = tableClient.GetTableReference("TBUsers");
        table.CreateIfNotExists();
    }

插入新实体:

public void SaveAsNew()
    {
        UserEntity user = new UserEntity(this);

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Settings.Azure_Storage_ConnectionString);
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
        CloudTable table = tableClient.GetTableReference("TBUsers");

        TableOperation insertOperation = TableOperation.Insert(user);
        var res = table.Execute(insertOperation);
    }

创建和插入都工作正常(至少不抛出异常和table.Execute返回正确的实体)

但我有问题,我想得到我的项目。代码看起来像这样

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Settings.Azure_Storage_ConnectionString);
        CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
        CloudTable table = tableClient.GetTableReference("TBUsers");
         TableOperation retrieveOperation = TableOperation.Retrieve<UserEntity>(pkey, rkey);
        TableResult retrievedResult = table.Execute(retrieveOperation);

retrieveResult.Result - 是一个奇怪的UserEntity对象。它的PartitionKey和RowKey很好,但其他属性为null或0(默认值)。

我做错了吗?

1 个答案:

答案 0 :(得分:0)

您可能需要一个默认构造函数来创建UserEntity实例。添加默认构造函数,然后重试