Проверка, существует ли документ БД Cosmos Document с использованием Core MVC - PullRequest
0 голосов
/ 29 апреля 2020

Я получаю список Azure больших двоичных объектов, а затем перебираю список. Я хочу найти в коллекции Cosmos DB, чтобы узнать, существует ли c .ImageFilename большого двоичного объекта. Если его не существует, добавьте новую запись в Cosmos Collection.

Эта строка не получает записи базы данных Cosmos:

var docExists = await _cosmosDbService.GetItemsAsyn c (item);

Раздел CosmosDBService.cs:

public async Task<IEnumerable<ANPRData>> GetItemsAsync(string queryString)
        {
            var query = this._container.GetItemQueryIterator<ANPRData>(new QueryDefinition(queryString));
            List<ANPRData> results = new List<ANPRData>();
            while (query.HasMoreResults)
            {
                var response = await query.ReadNextAsync();

                results.AddRange(response.ToList());
            }

            return results;
        }

Можете ли вы помочь?

//---------------------------------------------------------------------------------- 

// 

namespace WebApp_Storage_DotNet.Controllers
{
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Threading.Tasks;
    using System.IO;
    using Microsoft.WindowsAzure;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Blob;
    using Microsoft.Azure;
    using System.Configuration;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.WindowsAzure.Storage.Auth;
    using ANPR.Services;
    using ANPR.Models;

    public class UploadController : Controller
    {
        static CloudBlobClient blobClient;
        const string blobContainerName = "hvsimages";
        public string subFolder = "192-168-2-44/img/";
        static CloudBlobContainer blobContainer;
        public string accountName = "xxx";
        public string accountKey ="xxx";
        private ANPRData item;

        public readonly ICosmosDbService _cosmosDbService;
        public UploadController(ICosmosDbService cosmosDbService)
        {
            _cosmosDbService = cosmosDbService;
        }



        public async Task<ActionResult> Index() 
        {
            try
            {
                var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);

                blobClient = account.CreateCloudBlobClient();
                blobContainer = blobClient.GetContainerReference(blobContainerName);

                List<Uri> allBlobs = new List<Uri>();

                var directory = blobContainer.GetDirectoryReference("192-168-2-44/img/");
                var result = await directory.ListBlobsSegmentedAsync(true, BlobListingDetails.None, 500, null, null, null);


                foreach (var dirItem in result.Results)
                {

                     string item = "SELECT * FROM c WHERE c.ImageFilename = '" + dirItem.Uri + "''";
                   var datas = await _cosmosDbService.GetItemsAsync(item);


                     Console.WriteLine(datas);


                    //  Console.WriteLine(docExists);

                    if (datas == null)
                    {
                        var Bing = "I am Not Empty";
                        Console.WriteLine(Bing);
                    }
                    else
                    {
                        var Bing = "I am Empty";
                        Console.WriteLine(Bing);
                    }

                        allBlobs.Add(dirItem.Uri);
                    }
                return View(allBlobs);

            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                ViewData["trace"] = ex.StackTrace;
                return View("Error");
            }
        }


    }
}


1 Ответ

0 голосов
/ 05 мая 2020

Все закончилось так же просто, как оператор SQL.


 foreach (var dirItem in result.Results)
                {
                    string item = "SELECT * FROM c WHERE c.ImageFilename = '" + dirItem.Uri + "'";
                    var myQuery = await _cosmosDbService.ExistsDocument(item);

                    if (myQuery.Count() > 0)

...