Может LINQ к SQL-запросу серверная сторона DB поля XML?

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

28
задан naide 20 July 2018 в 11:22
поделиться

2 ответа

Теперь, когда интересный вопрос.

Прямо сейчас, Вы не можете дать SQL Server команду выполнять функции XML непосредственно от Linq. Однако можно заставить Linq использовать определяемые пользователем функции... так, Вы могли установить udf, чтобы обработать xml, получить правильные данные, и т.д., и затем использовать это в Вашем Linq выражении. Это выполнит на сервере и должно сделать то, что Вы хотите. Существует важное ограничение, хотя: путь XML, который Вы ищете (первый параметр к xmlColumn.value или подобный) должен быть встроен в функцию, потому что это должна быть строка литерал , это не может быть создано из входного параметра (например). Таким образом, можно использовать UDFs для получения полей, Вы знаете о при записи UDF, но не как способ общего назначения получить данные из столбцов XML.

Выезд раздел Supporting User Defined Functions (UDFs) превосходная серия Blog Scott Gutherie на Linq к SQL для большего количества информации о реализации.

Hope это помогает.

12
ответ дан T.J. Crowder 28 November 2019 в 03:55
поделиться

Для разъяснения ответа Daniel - Вы не можете использовать функцию, чтобы сделать это, если часть XPath запроса не фиксируется. См. мою запись в блоге на этом: http://conficient.wordpress.com/2008/08/11/linq-to-sql-faq-xml-columns-in-sql/

В основном Вы не можете запросить xml столбец через LINQ к SQL. Хотя это возвращает тип XElement, Вы не можете сделать никаких переводов SQL при попытке отфильтровать на этом столбце.

LINQ к SQL действительно поддерживает использование UDFs - но сам SQL не позволит Вам использовать строку параметров в XML xpath запрос - это должен быть строковый литерал. Это означает, что может работать, если XPath фиксируется во время проектирования, но не, если Вы хотели быть в состоянии передать переменный оператор XPath.

Это приводит только к двум другим альтернативным способам сделать его: встроенный SQL-оператор (который инвертирует значение наличия LINQ), и запись Библиотечной функции SQL в CLR.NET, чтобы сделать это.

4
ответ дан PaulG 28 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: