다음을 통해 공유


.NET을 사용하여 Azure Cosmos DB for Table에서 항목 만들기

적용 대상: 테이블

Azure Cosmos DB의 항목은 테이블 내에 저장된 특정 엔터티를 나타냅니다. API for Table에서 항목은 행 및 파티션 키의 복합으로 고유하게 식별되는 키-값 쌍 세트로 구성됩니다.

항목에 대한 고유 식별자 만들기

프로그래밍 방식으로 ****라고 하는 고유 식별자는 테이블 내의 항목을 식별하는 고유 문자열입니다. 각 항목에는 항목에 대한 논리 파티션을 확인하는 데 사용되는 파티션 키 값도 포함됩니다. 테이블 내에서 새 항목을 만드는 경우 두 키가 모두 필요합니다.

테이블 범위 내에서 두 항목은 동일한 행 키파티션 키를 모두 공유할 수 없습니다.

항목 만들기

TableEntity 클래스는 키-값 쌍의 임의 사전에서 새 항목을 쉽게 만들 수 있도록 고유하게 설계된 사전의 제네릭 구현입니다.

다음 전략 중 하나를 사용하여 테이블에 만들려는 항목을 모델링합니다.

기본 제공 클래스 사용

TableEntity 클래스의 (string rowKey, string partitionKey) 생성자를 사용하면 필수 속성만 있는 항목을 빠르게 만들 수 있습니다. 그런 다음, Add 메서드를 사용하여 키-값 쌍을 항목에 추가할 수 있습니다.

예를 들어 먼저 생성자에서 파티션 키를 지정한 다음, 새 키-값 쌍을 사전에 추가하여 TableEntity 클래스의 새 인스턴스를 만들 수 있습니다.

// Create new item using composite key constructor
TableEntity item1 = new(
    rowKey: "68719518388",
    partitionKey: "gear-surf-surfboards"
);

// Add properties to item
item1.Add("Name", "Sunnox Surfboard");
item1.Add("Quantity", 8);
item1.Add("Sale", true);

// Add new item to server-side table
await tableClient.AddEntityAsync<TableEntity>(item1);

TableEntity 클래스의 (IDictionary<string, object>) 생성자는 기존 사전을 테이블에 추가할 준비가 된 항목으로 변환합니다.

예를 들어 사전을 TableEntity 클래스의 새 인스턴스에 전달할 수 있습니다.

// Create dictionary
Dictionary<string, object> properties = new()
{
    { "RowKey", "68719518388" },
    { "PartitionKey", "gear-surf-surfboards" },
    { "Name", "Sunnox Surfboard" },
    { "Quantity", 8 },
    { "Sale", true }
};

// Create new item using dictionary constructor
TableEntity item2 = new(
    values: properties
);

// Add new item to server-side table
await tableClient.AddEntityAsync<TableEntity>(item2);

TableClient.AddEntityAsync<> 메서드는 TableEntity 형식의 매개 변수를 사용한 다음, 서버 쪽 항목을 테이블에 만듭니다.

인터페이스 구현

참고 항목

이 섹션의 예제에서는 Product라는 데이터를 나타내는 C# 형식을 이미 정의했다고 가정합니다.

// C# record type for items in the table
public record Product : ITableEntity
{
    public string RowKey { get; set; } = default!;

    public string PartitionKey { get; set; } = default!;

    public string Name { get; init; } = default!;

    public int Quantity { get; init; }

    public bool Sale { get; init; }

    public ETag ETag { get; set; } = default!;

    public DateTimeOffset? Timestamp { get; set; } = default!;
}

TableClient.AddEntityAsync<> 메서드는 ITableEntity 인터페이스를 구현하는 모든 형식의 매개 변수를 사용합니다. 인터페이스에는 이미 필수 RowKeyPartitionKey 속성이 포함되어 있습니다.

예를 들어 ITableEntity 인터페이스에서 최소한의 모든 필수 속성을 구현하는 새 개체를 만들 수 있습니다.

// Create new item
Product item = new()
{
    RowKey = "68719518388",
    PartitionKey = "gear-surf-surfboards",
    Name = "Sunnox Surfboard",
    Quantity = 8,
    Sale = true
};

그런 다음, 서버 쪽 항목을 만드는 AddEntityAsync<> 메서드에 이 개체를 전달할 수 있습니다.

// Add new item to server-side table
await tableClient.AddEntityAsync<Product>(item);

다음 단계

이제 다양한 항목을 만들었으므로 다음 가이드를 사용하여 항목을 읽습니다.