У меня есть устаревшая база данных, в которой хранятся комментарии пользователей (и немало других текстовых полей) как тип данных blob
, который я не могу изменить.Entity Framework Core 1.1.0 Преобразование типа данных
Я пишу уровень доступа к данным, который должен всегда преобразовывать данные в string
, когда он извлекается из базы данных, и конвертирует его обратно в blob
при сохранении.
Инструмент для строительных лесов EF сгенерировал свойства типа byte[]
для этих объектов.
public byte[] Comment { get; set; }
Я заметил, что если я просто изменить объектный тип собственности для string
это на самом деле сохранить данные правильно, но загрузка результатов данных в виде ошибки литья:
Unable to cast object of type 'System.Byte[]' to type 'System.String'.
(Интересно, что версия 1.0.0 не бросить эту ошибку, загрузка и сохранение работали нормально.)
Мой вопрос ... есть ли способ настройки EF ядра т o автоматически конвертировать эти данные в строку, когда я получаю ее из базы данных и обратно до blob
, когда она будет сохранена обратно? Или мне нужно написать целую кучу частных геттеров и сеттеров, чтобы сделать эту манипуляцию?
'byte []' - совершенно другой тип данных, чем 'string'. Преобразование 'byte []' в 'string' зависит от кодировки, ... EF не может сделать это для вас.Лучше всего оставить его как 'byte []' и написать getter, который возвращает вам строковое представление, подобное 'public string MyString {get {return Encoding.UTF8.GetString (MyBytes); }} ' –
Я думаю, что ваш лучший выбор - это свойства приятеля, пока https://github.com/aspnet/EntityFramework/issues/242 не достигнет успеха. –