преобразовать объект в документ DocumentDb в .Net Core

У меня есть следующий код, который принимает объект типа сотрудника на основе его модели, я хочу преобразовать его в документ DocumentDB, а затем опубликовать в базе данных. Как бы я сделал преобразование?

[HttpPost]
        public async Task Post([FromBody]Employee employee)
        {
            using (_logger.BeginScope("Post employee"))
            {
                try
                {
                    // convert employee to Document??
                    await _documentDbRepository.CreateItemsAsync(document);
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);
                    throw;
                }

            }
        }

person DarkW1nter    schedule 02.11.2017    source источник
comment
Требует ли подпись для CreateItemsAsync явного указания Document? Похоже, это какая-то пользовательская абстракция, которую вы имеете над фактическим DocumentClient, которая способна принимать практически любые object и вставлять их в Cosmos, используя сериализацию JSON по умолчанию.   -  person Jesse Carter    schedule 02.11.2017
comment
CreateItemsAsync на данный момент требует документ, поэтому вы имеете в виду, что он может принимать тип «объект», и это будет работать, будь то документ или пользовательский объект на основе модели?   -  person DarkW1nter    schedule 02.11.2017
comment
Что такое _documentDbRepository? Это похоже на пользовательский слой, который вы создали поверх. Если это жестко закодировано для Document, вам придется уважать это в данный момент. Обычный DocumentClient может принимать любые объекты, а не только документы.   -  person Jesse Carter    schedule 02.11.2017
comment
изменил его, чтобы принять в объекте, поэтому, пока я создаю новый id guid для каждой передаваемой вещи, он работает нормально. Если вы хотите поместить свой оригинальный комментарий в качестве ответа, я приму его, спасибо.   -  person DarkW1nter    schedule 02.11.2017


Ответы (1)


Похоже, вы используете пользовательский слой поверх обычных библиотек Cosmos, который жестко закодирован так, чтобы принимать только Document. Библиотеки, поставляемые Microsoft, способны вставлять любой универсальный объект и будут использовать сериализацию JSON по умолчанию, чтобы превратить его в документ для вас во время вставки. Изменение подписи в вашем пользовательском репозитории для принятия Object вместо Document должно разблокировать вас.

person Jesse Carter    schedule 02.11.2017