从Registry LINQtoSQL获取connectionstring

时间:2016-10-26 09:03:43

标签: c# linq-to-sql

我很困惑如何获取存储在注册表中的连接字符串以供DataContext使用。

我在哪里以及如何做到这一点:

public DataClassesDataContext() : 
            base(global::DDSTime.Properties.Settings.Default.DDSTimeConnectionString, mappingSource)
    {
        OnCreated();
    }

不使用Properties.Settings.Default.DDSTimeConnectionString但来自注册表的值?

我想这样做,因为应用程序在不同的位置使用,我不想将配置文件中的连接字符串留给所有人看。 只需一个小脚本,所有机器都会在其注册表中插入connectionstring键,并且不需要创建不同的“版本”,因为每个位置都在现场使用自己的SQL Server。

1 个答案:

答案 0 :(得分:0)

如果你还没有合适的构造函数,那么应该很容易创建一个像:

public DataClassesDataContext(string connectionString) : 
        base(connectionString, mappingSource)
{
    OnCreated();
}

这意味着每次创建新的DataContext时都需要传递connectionString。如果您愿意,可以将当前构造函数更改为

private static string GetDefaultConnectionString()
{
    var connectionString = ... // Read value from registry
    if (String.IsNullOrEmpty(connectionString))
        connectionString = global::DDSTime.Properties.Settings.Default.DDSTimeConnectionString ;
    return connectionString;
}

public DataClassesDataContext() :
            base(GetDefaultConnectionString(), mappingSource)
{
    OnCreated();
}