2009-03-28 7 views
0

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

У меня есть другие текстовые поля, которые, похоже, сохраняют свое форматирование, но они были вставлены с использованием старого 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 

ответ

1

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

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

1

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

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

EDIT:

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

+0

Ошибка - это класс, созданный Linq для соответствия моей таблице ошибок. Я использую SQL Server Management Studio. – tsilb

+0

Я понимаю это, но я до сих пор не знаю, что это такое. Вы не даете эту информацию. –

Смежные вопросы