1

一度投稿しましたが、情報が曖昧すぎたので、やり直します。

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レベルで発生しています。

4

2 に答える 2

1

\ nがデータベースレコードにないことを実際にどのように確認していますか?SQL Management Studioでレコードを見ると、\nは視覚的に表示されません。データをクエリするだけでは、スペースのように見えます。そのデータをコピーしてnotepad++に貼り付け、その文字列に存在するすべての文字を表示します(新しい行が表示されると思います)。

上記のようにテーブルビューに\nを手動で挿入する場合は常に、これは特殊文字ではありません。これは実際のテキスト'\n'です。'\ n'!= char(10)であることに注意してください。1つは特殊文字で、もう1つは単なるテキストです。

于 2011-05-20T18:14:10.713 に答える
0

このアドオンを使用して、生成されたSQLをログに記録します。次に、問題がどこにあるかを見つけることができます。+ Webページにデータを表示する場合は、を使用することを忘れないでくださいreplace("\n","<br/>")

于 2011-05-21T14:38:25.450 に答える