我正在使用 LINQ to SQL 类(DataContext)连接到我的数据库。我有三个具有相同架构的数据库Development
:Staging
和Live
. 我已经意识到,如果它们具有相同的模式,我可以使用相同的 DataContext 连接到它们——只需更改我传递给 DataContext 构造函数的连接字符串。我已经声明了一个接口,以便对创建 DataContext 的所有调用都通过它:
public interface IDataContextCreator
{
MyDataContext CreateDataContext();
}
现在我可以有这个接口的具体实现来连接到Development
数据库。Staging
Live
我现在想隐藏我的 DataContext 构造函数,以强制所有对创建DataContext的调用都通过上述接口。如果我将DataContext的可访问性更改为internal
,则无法在解决方案的其他项目中使用它。理想情况下,我希望将类可访问性修饰符保留为,public
但将构造函数更改为internal
. 有没有办法在自动生成的类中做到这一点?这个问题还有其他解决方案吗?
谢谢你。
编辑:
乔恩你是对的,应该制作构造函数internal
。我的数据层中有这些,我不希望其他项目/层中的类访问这些构造函数。然而,他们应该只能使用接口创建DataContext,然后使用创建的DataContext——因为它将在类级别上是公共的。