繁体   English   中英

将LINQ的构造函数隐藏到SQL DataContext

[英]Hiding the Constructors of LINQ to SQL DataContext

我正在使用LINQ to SQL Classes DataContext连接到我的数据库。 我有三个具有相同模式的数据库: DevelopmentStagingLive 我已经意识到,如果它们具有相同的模式,我可以使用相同的DataContext连接到它们 - 只需更改我传入DataContext构造函数的连接字符串。 我已声明了一个接口,以便所有对DataContext创建的调用都通过它:

public interface IDataContextCreator
    {
        MyDataContext CreateDataContext();
    }

现在我可以让这个界面的概念实现连接到DevelopmentStagingLive DB。

我现在想隐藏我的DataContext构造函数以强制所有对DataContext创建的调用都通过上面的接口。 如果我将DataContext的可访问性更改为internal ,我不能在解决方案中的其他项目中使用它。 理想情况下,我希望将类可访问性修饰符保持为public但将构造函数更改为internal 有没有办法在自动生成的类中执行此操作? 这个问题还有其他解决办法吗?

谢谢。

编辑: Jon你是对的,构造函数应该是internal 我在我的数据层中有这些,我不希望其他项目/层中的类到达这些构造函数。 然而,他们应该只能够创建一个使用界面的DataContext,然后使用创建的DataContext的 -因为它是公共的一流水平。

您可以使用http://l2st4.codeplex.com/上的T4模板替换VS代码。 有了这个,您可以修改构造函数代码spit以保护而不是公共。

但是,我不得不想知道为什么要使用单独的数据上下文,而不仅仅是更改配置文件中的连接信息,并使用转换为特定的构建操作提取适当的连接字符串。 请参阅http://msdn.microsoft.com/en-us/library/dd465326.aspx

您可以将构造函数声明为protected。

public class MyDataContext : DataContext {
    protected MyDataContext() {
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM