Как начать с / содержит работу с EF и SQL Хранение текстового столбца JSON - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть таблица со столбцом хранения nvarchar (max) json, как показано ниже,

{"status": "Archive", "oldCategories": {"name": "LONG Life - Молоко "," products ": {" tagPrice1Notes ":" 800 раз сказано "," columnType2 ":" "," columnType3 ":" someValue3 "," columnType4 ":" someValue4 "," columnType5 ":" someValue5 ", "columnType6": "someValue6", "columnType7": "someValue7"}}, "moreProperties": .... так далее

Теперь мне нужно получить все столбцы, где значение начинается с указанной выше строки Однако, я получаю 0 строк назад, вот что я пытаюсь,

 var matchMe = (
                "{'status':'Archieved'" +
                "','oldCategories': {'name': '" + someObject.Name +
                "','products': {'tagPrice1Notes': '" + someObject.C1 +
                "','columnType2': '" + someObject.C2 +
                "','columnType3': '" + someObject.C3 +
                "','columnType4': '" + someObject.C4 +
                "','columnType5': '" + someObject.C5 +
                "','columnType6': '" + someObject.C6 +
                "','columnType7': '" + someObject.C7 +
                "'}}"
                );
dbContext.CategoriesProducts.Where(x => x.MyJsonDetailsColumn.ToUpper().Trim().Contains(matchMe.ToUpper().Trim()))
.ToList();

Это временное исправление, и мы сделаем рефакторинг позже.

1 Ответ

1 голос
/ 19 февраля 2020

Ваш пример кода будет в основном читать все данные обратно вашему клиенту (части ToUpper / Trim будут означать, что это проверка на стороне клиента), так почему бы просто не прочитать все данные, десериализовать их в объект и выполнить надлежащий сравнение полей вам нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...