Я использую версию 3.8.5.0 ServiceStack.ormLite.dll.Каков формат dateTime.Now в вызове ExecuteSQL ORMLite?
Мы используем сервер postgreSql. Наш сервер postgreSQL имеет локаль, установленную в en-GB (в postgres.conf мы установили параметр dateStyle в «ISO, DMY»).
В нашем веб-приложения, когда мы переходим необработанного заявление SQL как:
var insertSql = string.Format("insert into ReportTable values (
'{0}', '{1}',)",
message.Id, DateTime.Now);
и использовать ExecuteSQL (InsertSQL), я получаю финиковой диапазон от даты в Postgres, как дата в MDY а база данных ожидает DMY.
Однако, если я:
var insertSql = string.Format("insert into ReportTable values (
'{0}', 'now',)",
message.Id);
вставка работает.
Я знаю, что я мог бы установить
<globalization Culture="en-GB"/>
Однако, у меня есть некоторые темы, которые делают некоторые фоновую обработку и мне придется изменить свою культуру, а также, чтобы получить эту работу.
Любые идеи, если есть какой-либо другой способ, я могу решить эту проблему в библиотеке ormLite?
Почему вы хотите передать необработанный SQL вообще, вместо использования параметризованного SQL? В этот момент вам не нужно беспокоиться об атаках конверсии * или * SQL. –
Спасибо, Джон. Я знал, что проблема с конверсией устранена с помощью параметризованного SQL, но даже не думала о SQL-инъекции. Я изменю свой код, чтобы удовлетворить это. Благодарю. –