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.
Вы не показываете, как определяется ошибка, так что немного трудно понять, что происходит.
РЕДАКТИРОВАТЬ:
Мне кажется, проблема в том, как вы просматриваете данные впоследствии. Как вы определяете, что форматирование неверно?