#c# #asp.net #azure-cosmosdb
Вопрос:
Просто любопытно, я пришел из среды Mongodb, но я переключаюсь на основную базу данных SQL CosmosDBs. Я не могу найти, как игнорировать дополнительные атрибуты элементов(у монго есть [BsonIgnoreExtraElements]
. Мои беглые поиски в Google также мало что дали.
У кого-нибудь есть какие-нибудь идеи по этому поводу?
Осветление
В основном CosmosDB не имеет предопределенных настроек классов(в основном он хранит необработанный json). Поэтому в будущем, если мы добавим больше элементов в контекстный класс базы данных, мы не хотим, чтобы наш сервер взорвался. Это устанавливается в обычном SQL с помощью bool, который вы передаете базовому клиенту EF, и на mongo с указанным атрибутом.
Кроме того, я посмотрел JsonIgnore
. Однако это означало бы, что я должен был бы заранее знать, какой элемент я хочу игнорировать.
Я ищу что-то, что будет игнорировать все неизвестные элементы. Это позволит гибко добавлять элементы в контекст, подключенный к той же базе данных, без ущерба для работы предыдущих версий(или без необходимости возвращаться и редактировать старые версии, JsonIgnore
что может стать довольно обременительным).
Комментарии:
1. Определить дополнительные элементы? то, что есть, — это то, что вы пытаетесь сделать или хотите сделать. Это облегчит помощь программистам, не являющимся монго БД, вам
2. В основном CosmosDB не имеет предопределенных настроек классов(в основном он хранит необработанный json). Поэтому в будущем, если мы добавим больше элементов в контекстный класс базы данных, мы не хотим, чтобы наш сервер взорвался. Это устанавливается в обычном SQL с помощью bool, который вы передаете базовому клиенту EF, и на mongo с указанным атрибутом.
3. Можете ли вы предоставить образец ввода и вывода, пожалуйста?
4. Итак, допустим, у вас есть строка json, которую ваш asp-сервер получает из базы данных документов. Затем он попытается проанализировать json в класс, который вы задали заранее. Проблема может возникнуть, когда вам необходимо поддерживать предыдущие версии ваших классов (для совместимости со старыми версиями вашего интерфейса). Это устанавливает ограничение, которое мы не можем изменить или удалить уже установленные элементы, не выпустив исправление для более ранних версий. Однако исторически сложилось так, что мы могли добавлять элементы в данный класс, потому что в предыдущих версиях нашего приложения дополнительные элементы игнорировались.
Ответ №1:
Извините, что трачу на это время всех подряд. Я решил сам проверить, и, похоже, cosmos core по умолчанию игнорирует дополнительные элементы, которые могут быть хорошими или плохими в зависимости от того, как вы на это смотрите. Важно отметить, что он будет создавать исключения, если вы переключите его на оболочку mongo вместо ядра.
Комментарии:
1. Да, мог бы догадаться, что нормальная сериализация будет игнорироваться — не беспокойтесь!