nHibernate剥离了一个特殊的角色

时间:2011-05-20 13:33:23

标签: string nhibernate unicode fluent-nhibernate markdowndeep

我发布了一次,但我的信息中有点过于模糊,所以我再试一次。

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 个答案:

答案 0 :(得分:1)

您如何确实验证\ n不在数据库记录中?当您查看sql management studio中的记录时,您将无法直观地看到\ n。如果您只是查询数据,它将看起来像一个空格。将该数据复制并粘贴到记事本++中并显示该字符串中存在的所有字符(我打赌你会看到新行)。

每当您在表格视图中手动插入\ n时,如上所述,这不是一个特殊字符。它是实际的文本'\ n'。请注意'\ n'!= char(10)。一个是特殊字符,另一个是文本。

答案 1 :(得分:0)

使用this附加组件来记录生成的sql。那么你可以找到问题所在。 +如果要在网页上显示数据,请不要忘记使用replace("\n","<br/>")

相关问题