기존 엔티티를 업데이트하고 프로세스에 열을 추가하는 방법이 없습니까?
예, 경우에 따라, 우리는 2 가지 방법으로 그렇게 할 수 있습니다 : 트랜잭션 데이터 모델 또는 사용을 편집 DynamicTableEntity
1.Edit 당신의 트랜잭션 데이터 모델 및 설정 ENDTIME의 날짜와 null 값이 허용됩니다 . 다음과 같이 데모 코드,
public class Transactional:TableEntity
{
public string PersonId { get; set; }
public string TransactionId { get; set; }
public DateTime StarTime { get; set; }
public DateTime? EndTime { get; set; }
public Transactional() { }
// Define the PK and RK
public Transactional(string persionId, string transactionId)
{
PartitionKey = persionId;
RowKey = transactionId;
}
}
우리가 값을 할당하고 테이블에 개체에 삽입하려고하지 않는 경우는, 다음 더 ENDTIME 열이 없습니다. 다음은 데모 코드입니다.
CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(CloudConfigurationManager.GetSetting("StorageConnectionString"));
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference("tableName");
table.CreateIfNotExists();
var guid = Guid.NewGuid().ToString();
Transactional transactional = new Transactional("tomtest", guid);
transactional.StarTime =DateTime.UtcNow;
TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(transactional);
TableResult result = table.Execute(insertOrMergeOperation);
어떻게
// update entity
TableOperation retrieveOperation = TableOperation.Retrieve<Transactional>("tomtest", "pk"); //PK, RK
TableResult retrieveResult = table.Execute(retrieveOperation);
Transactional updateEntity = retrieveResult.Result as Transactional;
if (updateEntity != null) updateEntity.EndTime = DateTime.UtcNow;
TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(updateEntity);
// Execute the operation.
TableResult resultinsertormerge = table.Execute(insertOrMergeOperation);
2. 우리는 그 과정에서 열을 추가 DynamicTableEntity
를 사용할 수있는 개체를 업데이트합니다. 다음은 데모 코드입니다.
var entity = new DynamicTableEntity("tomtest", "pk"); //PK, RK
entity.Properties.Add("EndTime", new EntityProperty(DateTime.UtcNow)); //properties want to add
var mergeOperation = TableOperation.InsertOrMerge(entity);
table.Execute(mergeOperation);