Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态System.Data.Linq.DataContext库_C#_Linq To Sql - Fatal编程技术网

C# 静态System.Data.Linq.DataContext库

C# 静态System.Data.Linq.DataContext库,c#,linq-to-sql,C#,Linq To Sql,我需要用c#编写一个库(dll),以正确处理DataContext的多个实例 必须为全局使用(web、控制台等)编写此库 在my old DB库中,我创建了一个带有私有costructor和静态属性的类型,以简化我的项目 例如: public class DbClass { private DbClass() { } private static DbClass instance; public static DbClass Instance {

我需要用c#编写一个库(dll),以正确处理DataContext的多个实例

必须为全局使用(web、控制台等)编写此库

在my old DB库中,我创建了一个带有私有costructor和静态属性的类型,以简化我的项目

例如:

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到sql中重用这个概念

有什么想法吗

编辑:

从格兰特·托马斯的第一句话来看,我认为我的请求没有得到很好的解释,也许我糟糕的英语对我没有帮助

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

此属性必须检测当前上下文(web、windows MTA线程、windows STA线程)

并创建/重用DataContext实例,而不会引发线程异常或其他冲突

一种DataContextFactory


任何评论/想法都很受欢迎

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

namespace MyDataContextNamespace {
  public partial class MyDataContext { 

  }
}

然后你可以从那里暴露你的单身汉。

好吧,如果我给你最好的答案,你最好选择我


如果我是你,我就不会去那里。阅读

这是我对mantain概念的第一个想法。但是DataContext类型的静态变量不仅在其实例中存储了一个字符串,而且在被2个iis线程调用时抛出ThreadException。不知道这句话的意思,但当然,单例在web环境中不会固有地工作-每个请求都会产生一个新的上下文(这可能不会得到处理,因为您希望使用同一个)。这个答案为您提供了一种方法,可以完全按照您现在的方式“扩展”数据上下文,但不能修复您现有的问题(是的,您当前的实现也会遇到同样的问题)。我需要重用相同的概念(静态变量),而不是扩展DB类。我的第一个想法是用对象替换私有静态变量到HttpContext.Current.Session.if(HttpContext.Current!=null&&HttpContext.Current.Session[“dataCtx”]==null)…等等。这是在web上下文中实现它的正确方法?在控制台多线程上下文中,我可以使用什么?如果我是你,我不会去那里。阅读