LINQ InsertOnSubmit теряет форматирование

У меня есть таблица с обнуляемым полем типа текста. Когда я запускаю InsertOnSubmit(), он вставляется успешно, но все форматирование теряется. В частности, я храню трассировку стека ошибки. Каждая запись была отформатирована в отдельной строке, и она выглядит красиво, но когда я извлекаю ее из SQL, она теряет все свои crlf4.

У меня есть другие текстовые поля, которые, кажется, сохраняют свое форматирование, но они были вставлены с использованием старого ADO.NET. Как это можно исправить?

Код:

string[] stacktrace = Environment.StackTrace.Replace("\r", "").Replace("\n", "").Replace("  at", "\n").Split('\n');
string stack = "";

for (int i = 0; i < stacktrace.Length; i++)
    stack += stacktrace[i].Trim() + "\r\n";

Error err = new Error();
err.Severity = (byte)sev;
err.Product = (byte)prod;
err.Location = stacktrace[0];
err.Title = message;
err.datetime = DateTime.Now;
err.StackTrace = stack;

dc.Errors.InsertOnSubmit(err);
dc.SubmitChanges();

Обратите внимание, что если я отлаживаю в приложении, err.StackTrace и стек выглядят корректно до и после SubmitChanges().

Определение ошибки:

[Column(Storage="_ID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int ID // ...
[Column(Storage="_AID", DbType="Int")]
public System.Nullable<int> AID // ...
[Column(Storage="_Severity", DbType="TinyInt NOT NULL")]
public byte Severity
[Column(Storage="_Product", DbType="TinyInt NOT NULL")]
public byte Product
[Column(Storage="_Location", DbType="VarChar(255) NOT NULL", CanBeNull=false)]
public string Location
[Column(Storage="_Title", DbType="VarChar(255) NOT NULL", CanBeNull=false)]
public string Title
[Column(Storage="_Ex", DbType="Text", UpdateCheck=UpdateCheck.Never)]
public string Ex
[Column(Storage="_Notes", DbType="Text", UpdateCheck=UpdateCheck.Never)]
public string Notes
[Column(Storage="_datetime", DbType="DateTime NOT NULL")]
public System.DateTime datetime
[Column(Storage="_InnerException", DbType="Text", UpdateCheck=UpdateCheck.Never)]
public string InnerException
[Column(Storage="_StackTrace", DbType="Text", UpdateCheck=UpdateCheck.Never)]
public string StackTrace

[Association(Name="Activity_Error", Storage="_Activity", ThisKey="AID", IsForeignKey=true)]
public Activity Activity

2 ответа

Решение

Вы действительно пытались заглянуть в свою базу данных SQL с помощью Studio Manager и посмотреть, что на самом деле хранится в базе данных. Просматривая там данные, вы узнаете, есть ли проблема СОХРАНЕНИЕ данных или ПОЛУЧЕНИЕ данных.

Я думаю, что проблема заключается в поиске данных.

Вы уверены, что все, что вы используете для просмотра ошибок, не удаляет пробелы? Для примера, любой веб-браузер будет игнорировать \ r \ n.

Вы не показываете, как определяется ошибка, так что немного трудно понять, что происходит.

РЕДАКТИРОВАТЬ:

Мне кажется, проблема в том, как вы просматриваете данные впоследствии. Как вы определяете, что форматирование неверно?

Другие вопросы по тегам