C# 静态System.Data.Linq.DataContext库
我需要用c#编写一个库(dll),以正确处理DataContext的多个实例 必须为全局使用(web、控制台等)编写此库 在my old DB库中,我创建了一个带有私有costructor和静态属性的类型,以简化我的项目 例如: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 {
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上下文中实现它的正确方法?在控制台多线程上下文中,我可以使用什么?如果我是你,我不会去那里。阅读