Когда дело доходит до хранения SQL в коде, большинство людей используют строки:
Dim strSql As String = "Select Foo, Bar From FooBarTable Where Something = @Something"
Проблема в том, что когда у вас очень длинные строки SQL, их чтение в коде становится затруднительным. Обычно вы можете разделить строки следующим образом:
Dim strSql As String = "Select Foo, Bar From FooBarTable " & _
"Where Something = @Something"
Это вызывает ряд проблем:
- Вы не можете скопировать его в SSMS или из нее
- Он использует неэффективный способ (
&
) конкатенации строки (не то, чтобы это действительно имело значение, поскольку ваша БД на порядки медленнее, чем класс строки)
Так почему бы не хранить длинные строки SQL в виде System.XML.Linq.XElement
?
Dim SQL = <SQL>
Select Foo, Bar From FooBarTable
Where Something = @Something
</SQL>
Вы можете вызвать его в коде, используя SQL.Value
.
С помощью этого метода вы можете сохранить разрывы строк и форматирование, чтобы было удобнее читать и копировать.
Мой вопрос, по сути, я наткнулся на хитроумный способ хранения многострочных строк SQL в коде, или я что-то здесь упустил? Кажется, это работает в моем коде, но я не уверен, насколько это эффективно.
Есть мысли?