Строки Unicode с использованием ServiceStack.OrmLite в SQL Server 2008 R2 Express

Мы начали использовать версию OrmLite для .NET в нашем проекте C#, в котором используется хранилище SQL Server 2008 R2 Express. https://github.com/ServiceStack/ServiceStack.OrmLite

Теперь мы обнаружили, что невозможно сохранить символы Unicode в таблице с помощью этого преобразователя ORM с SQL Server.

Нам нужно многоязычное приложение (поэтому установка конкретной LOCALE в SQL Server не является решением).

Мы также проверили, что при использовании простого ADO.NET все работает нормально!

Мы также попытались установить параметр конфигурации:

OrmLiteConfig.DialectProvider.UseUnicode = true;

Никаких изменений!
(думаю, это связано только с созданием таблицы, а не с сохранением строки...)


person janeks malinovskis    schedule 01.06.2012    source источник
comment
Какой тип данных вы используете в столбце базы данных, где хранится эта строка?   -  person Sergey Rybalkin    schedule 01.06.2012
comment
В исходном коде я обнаружил, что не используются параметризованные параметры запроса - строковые значения объединяются для генерации SQL-операторов Create/Upate/Delete! Чтобы решить эту проблему, я перешел на Dapper ORM и внес некоторые изменения в соответствии с потребностями моего проекта.   -  person janeks malinovskis    schedule 10.10.2012
comment
У меня была аналогичная проблема с MySQL и OrmLite. Добавление CharSet=utf8; до конца строки подключения у меня это сработало. Возможно, есть аналогичный способ объявить кодировку для SQL Server в строке подключения.   -  person swax    schedule 28.11.2012


Ответы (2)


Для людей, которые все еще сталкиваются с этой проблемой: в v3.9.71 OrmLite эта проблема была исправлена, если вы установили OrmLiteConfig.DialectProvider.UseUnicode = true;

Это изменит базовый запрос на использование Unicode.

person Stef Leurs    schedule 10.02.2016

Для .NET Core

Вы должны поставить:

OrmLiteConnectionFactory dbFactory = new OrmLiteConnectionFactory (connStr, SqlServerDialect.Provider);

OrmLiteConfig.DialectProvider.GetStringConverter().UseUnicode = true;

в ваш Startup.cs

person Zbigniew Tokarski    schedule 26.09.2019