用于静态System.Data.Linq.DataContext的库

时间:2013-03-30 22:32:35

标签: c# linq-to-sql

我需要在c#中编写一个库(dll)来正确处理DataContext的多个实例。

必须为全局使用(web,console等)编写此库。

在我的旧数据库库中,我创建了一个带有私有构造函数和静态属性的类型,以简化我的项目

一个例子:

public class DbClass
{
    private DbClass() { }

    private static DbClass instance;
    public static DbClass Instance
    {
        get
        {
            if (DbClass.instance == null)
                DbClass.instance = new DbClass();
            return DbClass.instance;
        }
    }
}

使用示例:

public void Update()
{
    DbClass.Instance.ExecuteSql("UPDATE Users SET IsUpdated = 'True'");
}

此类仅将一个字符串(connectionString)存储到其静态实例中:Web上下文中没有问题,控制台上下文中没有问题。

但是我需要通过扩展DataContext类型将这个概念重用于linq-to-sql。

有什么想法吗?

修改

根据格兰特托马斯的第一条评论,我认为我的要求没有得到解释,也许我的英语不好帮助..

我需要编写.Net库(dll)来通过静态DataContext属性管理数据库数据:

此属性必须检测当前的Context(web,windows MTA Thread,windows STA Thread)

并创建/重用DataContext的实例,而不会抛出ThreadExceptions或其他冲突。

一种DataContextFactory ......

赞赏任何意见/想法

2 个答案:

答案 0 :(得分:1)

好吧,如果我给你最好的答案你也可以选择我......

如果我是你,不会去那里。阅读http://www.west-wind.com/weblog/posts/2008/Feb/05/Linq-to-SQL-DataContext-Lifetime-Management

答案 1 :(得分:0)

您可以通过在同一命名空间下创建另一个文件来轻松扩展DataContext:

namespace MyDataContextNamespace {
  public partial class MyDataContext { 

  }
}

然后你可以从那里公开你的单身人士。