我有一个在我的应用程序中使用的记录器类,包括请求和线程。记录器由每个 Log.Insert(string text) 的数据库插入组成。记录器是一个静态类,每次调用 Insert 都会创建一个新的数据库上下文。可能有很多对 Insert 的调用,并且同时有很多数据库上下文不利于优化。(我有时会遇到数据库超时,因为跨应用程序的 sql 操作太多 - 所以确实需要优化)。
这可以通过在 Logger 类的静态成员中创建和存储单个数据库上下文来优化,该成员仅用于 Log.Inserts?或者这会失败吗?
记录器类的简化版本;
[Table]
public class Log
{
[Column]
public string Text { get; set; }
private static DataContext DatabaseContextInsert { get; set; }
public static void Insert(string text)
{
if (DatabaseContextInsert == null)
{
DatabaseContextInsert = DataContextHelper.GetDataContext();
}
var log = new Log { Text = text };
lock (DatabaseContextInsert)
{
DatabaseContextInsert.GetTable<Log>().InsertOnSubmit(log);
DatabaseContextInsert.SubmitChanges();
}
}
}