1
푸른 테이블을 처음 사용하고 있습니다. 테이블을 만들고, 항목을 삽입하고 다시 가져 오려고합니다.Azure 테이블 저장소, table.Execute 잘못된 엔터티를 반환합니다.
내가 가진 엔티티 클래스 :
public static void CreateTable()
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(Settings.Azure_Storage_ConnectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("TBUsers");
table.CreateIfNotExists();
}
새로운 개체를 삽입 :
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 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);
}
모두 생성 및 삽입이 잘 작동 (에서 적어도 예외를 throw하지 않고 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 (기본값)입니다.
내가 잘못 했나요?
그래서'table.Execute'에서 반환 된 엔티티는 속성 집합을 가지고 있지만 나중에 검색된 엔티티는 아닙니까? 쿼리에서 사용중인 RowKey와 PartitionKey가 삽입시 사용하고있는 것과 정확히 동일합니까? –
삽입하기 전에 UserEntity가 올바르게 채워지고 table.Execute (insertOperation)가 올바른 Entity를 반환합니다. 그래서 저는 그 삽입이 맞다고 생각합니다. 키가 올바르지 않습니다. 유효하지 않은 키를 입력하면 null 객체 만 반환됩니다. 올바른 키가있을 때 UserEntity 객체를 반환하지만 지정되지 않은 속성이있는 경우 –
이유를 찾았습니다. 처음 엔 실수가 있었기 때문에 일부 엔티티가 올바르게 삽입되지 않았습니다. 엔티티의 세트 수식어는 비공개 였기 때문에 값이 테이블에 저장되지 않았습니다. –