添加 CosmosDB 实体,(无法解析租户类型实体的 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


波斯汪
浏览 205回答 1
1回答

蝴蝶刀刀

正如 Github 自述页面在限制部分所述由于 Cosmosdb 内部 id 属性的工作方式,有一个强制性限制。如果没有字符串,则不能拥有名为 Id 的属性或具有属性 [JsonProperty("id")] 的属性。宇宙 ID 需要以某种方式存在于您的实体模型中。因此,如果它不是实体的一部分,您可以只实现 ICosmosEntity 接口或扩展 CosmosEntity 类。在您的情况下,推荐的修复方法是TenantId用[JsonProperty("id")]属性装饰。
打开App,查看更多内容
随时随地看视频慕课网APP