我有一个表格,其中包含可文本类型的可空字段。当我运行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();
请注意,如果我在应用程序中调试,则在SubmitChanges()之前和之后,err.StackTrace和堆栈看起来正确。
错误定义:
[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
答案 0 :(得分:1)
您确定无论您使用什么来查看错误都没有剥离空白吗?对于intance,任何Web浏览器都将忽略\ r \ n。
您没有显示错误的定义,因此很难看到发生了什么。
编辑:
在我看来问题就是你之后如何查看数据。你是如何确定格式错误的?
答案 1 :(得分:1)
您是否真的尝试使用Studio Manager查看SQL数据库,并查看数据库中实际存储的内容。通过查看那里的数据,您可以了解存储数据或检索数据是否存在问题。
我认为问题在于检索数据。