C# Azure表存储,表。执行返回无效实体

C# Azure表存储,表。执行返回无效实体,c#,.net,azure,azure-table-storage,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 R

我是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);
    }
创建和插入都可以正常工作(至少不要抛出异常和表。执行返回正确的实体)

但我有个问题,我想拿我的东西。代码如下所示

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);
CloudStorageAccount-storageAccount=CloudStorageAccount.Parse(Settings.Azure\u Storage\u ConnectionString);
CloudTableClient tableClient=storageAccount.CreateCloudTableClient();
CloudTable=tableClient.GetTableReference(“TBUsers”);
TableOperation retrieveOperation=TableOperation.Retrieve(pkey,rkey);
TableResult retrievedResult=table.Execute(retrieveOperation);
Result-是一个奇怪的UserEntity对象。它的PartitionKey和RowKey很好,但其他属性为null或0(默认值)


我做错什么了吗?

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

,以便从
表返回的实体。Execute
设置了属性,但稍后检索的实体没有设置属性?是否确定在查询中使用的RowKey和PartitionKey与在insert中使用的完全相同?在insert UserEntity正确填充之前,table.Execute(insertOperation)返回正确的实体。所以我认为插入是正确的。键是正确的,因为当我输入无效键时,它只返回d null对象。当我有正确的键时,它返回UserEntity对象,但带有未分配的属性。有些实体没有正确插入,因为我第一次出错。实体的集合修饰符是私有的,因此它们的值未保存在表中。