2017-12-08 8 views
0

Azure 저장소 테이블에 C# 개체를 저장할 때 개인 설정 도구를 사용하는 속성은 무시됩니다. setter를 공개하지 않고 테이블에 이러한 속성을 쓸 수 있습니까?개인 설정 도구를 사용하여 Azure 테이블에 POCO 저장

Json.net은 JsonProperty 속성을 통해이 기능을 제공합니다. 스토리지 테이블에 사용할 수있는 속성이 있습니까? 내가 찾을 수있는 유일한 속성은 속성을 무시하는 데 사용되는 IgnorePropertyAttribute입니다.

class TestEntity : TableEntity 
{ 
    public TestEntity(string property1, string property2) 
    { 
     this.Property1 = property1; 
     this.Property2 = property2; 
    } 
    public string Property1 { get; set; } 
    public string Property2 { get; private set; } 
} 

TestEntity testEntity = new TestEntity("Value1", "Value2"); 
testEntity.PartitionKey = "PartitionKey"; 
testEntity.RowKey = "RowKey"; 
TableOperation insertOperation = TableOperation.Insert(testEntity); 
table.Execute(insertOperation); 

위의 예제에서는 Property1 (Value1) 만 테이블에 저장됩니다. Property2 값은 저장되지 않습니다. setter를 public으로 변경하기 위해이를 저장하는 유일한 방법.

+1

그것은 좋지 않을까 - [mcve]를. – mjwills

+0

이 문제를 보여주는 예제 코드를 추가했습니다. – mtcup

+0

[Azure 테이블 스토리지에 임의의 키 값 쌍을 저장할 수 있습니까?] (https://stackoverflow.com/questions/14595486/how-can-i-store-arbitrary-key-value-pairs-in- azure-table-storage) 거기에 대한 답을 참조하여 Property2를 WriteEntity() 및 ReadEntity() 메소드에 추가하십시오. –

답변

0

버전 8.0 Table Storage SDK는 사용자 정의 .Net 객체를 테이블 저장소 (개인 설정자의 속성 포함)에 쓰고 읽을 수 있으므로 ITableEntity 인터페이스를 덮어 쓸 필요가 없습니다. SDK가 지원하는 여러 가지 방법이 있습니다.

사용자 정의 개체는 ITableEntity 인터페이스를 구현하거나 TableEntity 클래스에서 상속하지 않아도됩니다. 또한 복잡한 중첩 된 속성을 포함 할 수 있습니다. 이들 모두는 IEnumerable 유형의 색인화 된 특성 (목록, 배열 등)을 제외하고는 지원됩니다.

  1. 당신은 EntityProperties의 평평한 사전에 사용자 정의 닷넷 개체를 변환하는 도우미 메서드를 TableEntity.Flatten 정적 인 방법을 사용할 수 있습니다 :

    그래서 여기에 방법이다. 해당 사전으로 DynamicTableEntity를 만들고 테이블 저장소에 씁니다. 이 엔티티는 동일한 PK, RK를 사용하여 다시 읽을 수 있으며 TableEntity.ConvertBack<YourEntityType> 메서드를 사용하여 원래 엔티티를 다시 구 성할 수 있습니다.

  2. 두 번째 다른 방법은 SDK에 TableEntityAdapter 클래스를 사용할 수 있습니다. 당신은 내가 여기에 비슷한 질문에 준 샘플 사용 대답 볼 수 있습니다 : 당신이 우리에게 관련된 코드의 일부 보여줄 수 있다면 Sample writing a generic object to Azure Storage?

+0

테이블에 내 개체를 저장하기 위해 TableEntityAdapter를 사용하고 있습니다. 그러나 개인 설정자가있는 속성은 테이블에 저장되지 않습니다. – mtcup

+0

또한 이러한 속성에 대해 getter (개인용)를 사용하거나 읽기 전용입니까? 코드와 함께 새로운 질문을 올리면 내가 볼 수 있습니다. –