我有一個記錄器類,遍及我的應用程序,在請求和線程中都使用。記錄器由每個Log.Insert(字符串文本)的數據庫插入組成。記錄器是一個靜態類,每次調用Insert時都會創建一個新的數據庫上下文。可能會有很多調用Insert,並且很多數據庫上下文同時不利於優化。 (我有時會因爲應用程序中的sql操作太多而導致數據庫超時 - 所以確實需要優化)。LINQ DataContext堅持很多插入的最佳實踐
這是否可以通過在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();
}
}
}
你想顯示一些代碼? –
我認爲這將有助於你[http://stackoverflow.com/questions/2481956/linq-to-sql-datacontext-for-a-web-application][1] [1]:HTTP ://stackoverflow.com/questions/2481956/linq-to-sql-datacontext-for-a-web-application – Charlie
添加示例類 – Eilev