У меня есть бизнес-объект, называемый учебный год, который имеет флаги перечисления на данный момент:магазин JSON массив в JSON строку в базе данных
[Flags]
public enum VisibleDayOfWeek : int
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
Для меня это являются объекты значений без идентификаторов они не получают дополнительную таблицу SQL , Это также было бы излишним.
Теперь я думал о сохранении этих видимых дней (которые пользователь может настроить) как значение int в базе данных. Он работает в настоящий момент, но чтение/запись в базе данных и чтение/запись этих значений в бизнес-объект, а выполнение интеграционных тестов с этими объектами - боль.
Поскольку у меня есть клиент javascript, который использует json-данные, я подумал сегодня, почему бы не сохранить json-массив, который я получаю из браузера напрямую как строка json в базе данных. Поэтому единственное, что мне нужно сделать, это json.parse на стороне клиента. А для выполнения интеграционных тестов на стороне сервера я использую существующие json.serialize/deserialize методы из моей json-библиотеки.
Видимые дни меняются в течение года только 1,2 или 3 раза не часто. На пользователя есть 5 школьных датаров за 5 лет, может быть, не намного больше. Столбец видимых дней никогда не будет запрашиваться через sql select. Логика пользовательского интерфейса выполняется на стороне клиента.
Так что для меня хорошая идея сохранить json-массив как строку json в базе данных sql.
Что вы думаете о моем новом подходе? Вы видите какие-то негативные побочные эффекты, о которых я не думал, о которых я мог бы покаяться позже? ..
SQL не поддерживает JSON изначально, поэтому вы не можете напрямую запускать запросы к данным JSON. С другой стороны, SQL Server поддерживает запросы на основе XML и XML. Таким образом, вы можете захотеть сохранить преобразование JSON в XML для хранения. – wdosanjos
Вы прочитали мой ВОПРОС или просто прочитали название? quote: «... Столбец видимых дней никогда не будет запрашиваться через sql select» – Elisabeth
Если есть гарантия, что никогда не будет необходимости запрашивать эти данные, просто сохраните JSON в столбце varchar/nvarchar. Но я предлагаю сохранить ваше решение более открытым для будущих требований/улучшений, сохранив XML вместо этого. – wdosanjos