我发布了一次,但我的信息中有点过于模糊,所以我再试一次。
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
级别。
答案 0 :(得分:1)
您如何确实验证\ n不在数据库记录中?当您查看sql management studio中的记录时,您将无法直观地看到\ n。如果您只是查询数据,它将看起来像一个空格。将该数据复制并粘贴到记事本++中并显示该字符串中存在的所有字符(我打赌你会看到新行)。
每当您在表格视图中手动插入\ n时,如上所述,这不是一个特殊字符。它是实际的文本'\ n'。请注意'\ n'!= char(10)。一个是特殊字符,另一个是文本。
答案 1 :(得分:0)
使用this附加组件来记录生成的sql。那么你可以找到问题所在。
+如果要在网页上显示数据,请不要忘记使用replace("\n","<br/>")
。