Как определить конкретную функцию для сохранения и получения полей varchar в / из БД? - PullRequest
1 голос
/ 14 декабря 2011

У нас есть старая БД, которую мы не можем изменить из-за проблем совместимости.Таким образом, большинство полей varchar содержат символы не в юникоде, которые считываются через набор символов, точнее, cp1251.

Мы разрабатываем новое приложение на старой БД, используя EF4.1.Проблема в наличии данных в ascii cp1251 и необходимости их отображения в utf-8.К сожалению, я новичок в EF.Так что у меня проблемы повсюду.

Я ищу способ реализовать 2 функции, которые преобразуют строку из cp1251 в utf-8 прямо при извлечении данных и вводе из / в БД.

Позвольте мне выразиться так, есть способ поймать попытку EF сохранить поле varchar, взять его текущие данные и преобразовать в формат cp1251 и наоборот при извлечении независимо от поля, таблицы или базы данных в настоящее время.будучи использованным, это было бы больше специфической реализацией соединения.

У нас нет ни уровня доступа к данным, ни бизнес-логики, мы просто идем прямо от UI к EF4.1, и для любой бизнес-логики, требующей реализации, мы просто помещаем их в класс DbContext.

Iпросто не знаю, что искать в Интернете или с чего начать.

любые указатели приветствуются.заранее спасибо.

1 Ответ

1 голос
/ 14 декабря 2011

Просто убедитесь, что все поля, которые используют cp1251, помечены как не Unicode и попробуйте использовать его. ИМХО это должно работать. Не существует точки расширения для добавления пользовательской функции преобразования для некоторого типа данных.

Чтобы свойство не являлось юникодом в EDMX, просто установите его на страницах свойств свойства. Чтобы сделать его не-юникод в отображении кода, используйте:

modelBuilder.Entity<YourEntityType>()
            .Property(p => p.YourStringProperty)
            .IsUnicode(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...