nHibernate убирает специальный символ - PullRequest
1 голос
/ 20 мая 2011

Я опубликовал это один раз, но я был слишком расплывчат в своей информации, поэтому я пытаюсь снова.

nHibernate / Fluent nHibernate, похоже, обрезает или «удаляет» определенные символы изстроки, которые я отправляю в мою базу данных.Например, если я отправлю строку This\nis\na\nblock\nof\ntext\n\with\nreturns, символ \n представляет возврат каретки.Я хочу, чтобы они остались без изменений, потому что позже, когда данные будут считаны обратно, то есть когда они будут проанализированы MarkdownDeep

Однако я заметил, что символ \nв частности, «обнажается», когда база данных выполняет свою фиксацию.Я выполнил отладку вплоть до ISession.SaveOrUpdate(object), и я могу подтвердить, что данные не изменились до такой степени, что я могу визуально следить за отладкой.Но затем я иду и смотрю на запись в базе данных, и на ней нет этого символа.

Если я использую String.Replace("\n","\\n")) в тексте, это на самом деле будет работать правильно.Но это не похоже на разумный способ хранения всего.Это означает, что я должен постоянно помнить, какие поля могут иметь эту проблему, и выполнять промежуточную логику.

Есть ли параметр, которого мне не хватает в nHibernate/Fluent nHibernate, который вынуждает его удалить эти данные?

Путь к отладочному коду

Следуя пути моего кода, он идетвот так.

ASP.NET MVC View (textarea) -> This\nis\na\nblock\nof\ntext\n\with\nreturns

ASP.NET MVC Model (Json) -> This\nis\na\nblock\nof\ntext\n\with\nreturns

ASP.NET MVC Controller Parameter -> This\nis\na\nblock\nof\ntext\n\with\nreturns

ISession.SaveOrUpdate -> This\nis\na\nblock\nof\ntext\n\with\nreturns

Database Record -> This is a block of text with returns

Так что проблема, очевидно, происходит на уровне ISession.

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Как вы на самом деле проверяете, что \ n нет в записи базы данных? Вы не увидите \ n визуально, когда посмотрите на запись в студии управления sql. Это будет выглядеть как пробел, если вы просто запросите данные. Скопируйте и вставьте эти данные в notepad ++ и покажите все символы, которые существуют в этой строке (держу пари, вы увидите новые строки).

Всякий раз, когда вы вручную вставляете \ n в табличное представление, как вы описали выше, это не специальный символ. Это фактический текст '\ n'. Обратите внимание, что '\ n'! = Char (10). Один - это специальный символ, а другой - просто текст.

0 голосов
/ 21 мая 2011

Используйте это дополнение для регистрации произведенных sql.тогда вы можете найти, где проблема.+ Если вы отображаете данные на веб-странице, не забудьте использовать replace("\n","<br/>").

...