我读了Rick Strahl的文章,关于处理数据上下文的方法。我的DBML在一个类库中,我通过在该库内创建一个单独的自定义部分类中的静态Current方法来保持我的数据上下文处于打开状态。
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的使用寿命?