正在添加CosmosDB实体(无法解析Tenant类型实体的iD)



我正在尝试使用以下包添加一个cosmosdb文档:

https://github.com/Elfocrash/Cosmonaut

api控制器是这样的:

[HttpPut]
public async Task<IHttpActionResult> PutTenant([ModelBinder(typeof(TenantModelBinder))] Tenant tenant)
{
//var provider = new MultipartMemoryStreamProvider();
//var contentType = "";
//var content = new byte[0];
//await base.Request.Content.ReadAsMultipartAsync(provider);
//if (provider.Contents.Count > 0)
//{
//    contentType = provider.Contents[0].Headers.ContentType.MediaType;
//    content = await provider.Contents[0].ReadAsByteArrayAsync();
//}

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["AzureStorageKey"].ToString());
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference(ConfigurationManager.AppSettings["certificatesContainer"].ToString());
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");
// Create or overwrite the "myblob" blob with contents from a local file.
//blockBlob.Properties.ContentType = tenant.ContentType;
MemoryStream stream = new MemoryStream(tenant.CertificateFile);
blockBlob.UploadFromStream(stream);
var tenantStore = CosmosStoreFactory.CreateForEntity<Tenant>();
tenant.CertificatePath = blockBlob.Uri;
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var added = await tenantStore.AddAsync(tenant);
return StatusCode(HttpStatusCode.NoContent); 
}

然而,我得到了这个错误:

Unable to resolve iD for entity of type Tenant

我的租户类别:

public class Tenant
{
public string TenantId { get; set; }
public string TenantUrl { get; set; }
public Uri CertificatePath { get; set; }
public string CertificatePassword { get; set; }
public byte[] CertificateFile { get; set; }
public override string ToString()
{
return JsonConvert.SerializeObject(this);
}
}

如Github Readme页面在限制部分中所述

由于Cosmosdb的内部id属性的工作方式,有一个强制性的限制。不能有名为Id的属性或属性为[JsonProperty("Id"(]的属性而不使用字符串。宇宙本我需要以某种方式存在于你的实体模型中。因此,如果它不是实体的一部分,您可以只实现ICosmosEntity接口或扩展CosmosEntity类。

在您的案例中,建议使用[JsonProperty("id")]属性装饰TenantId

相关内容

  • 没有找到相关文章

最新更新