我讀了Rick Strahl的article瞭解如何處理數據上下文。我的DBML位於類庫內部,通過在庫中單獨的自定義部分類中創建靜態Current方法來保持我的數據上下文打開。Linq to SQL DataContext生命週期管理問題
public partial class DataContext
{
public static DataContext Current
{
get
{
DataContext dc = HttpContext.Current.Items["dc"] as DataContext;
if (dc == null)
{
dc = new ImmediacyPageDataContext();
HttpContext.Current.Items["dc"] = dc;
}
return dc;
}
}
然後訪問它像這樣
DataContext dc = DataContext.Current;
然而,這導致無論何時更新我的DBML文件的問題。編輯完DBML文件後,每當我嘗試構建項目時,我的設計器文件不會重新生成/被刪除。如果我嘗試運行自定義工具選項,它會返回一個錯誤。
我可以避開這個問題的唯一方法是重新命名或刪除自定義部分類,重新生成設計器文件,然後將我的自定義部分類回液。這是一項工作,但是......它有點痛苦。
是否有更好的方法來取,這將使編輯我的DBML文件更容易,同時延長我的DC,只要可能嗎?
忘了提及部分類是在一個單獨的文件。 – 2009-05-22 16:18:41
如果您將部分文件命名爲MyContext.partial.cs(而不是MyContext.cs,它將與主MyContext.dbml的名稱相匹配),那麼IDE將不會將您的部分文件與主dbml文件相關聯,並且您然後可以用任何你喜歡的方式格式化代碼。 – 2009-08-22 05:33:51