0

我有一个使用 LinqToSQL 查询数据库的项目,但我不知道如何从编译后可以编辑的文件中获取连接字符串。这样做的正确方法是什么?

我有一个由 MSLinqToSQLGenerator 构建的名为 CleansingData 的文件,如下所示:

<?xml version="1.0" encoding="utf-8"?><Database Name="MyDBApp" Class="DataClasses1DataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
<Connection Mode="AppSettings" ConnectionString="Data Source=MyServer\MyDB;Initial Catalog=MyCatalog;Persist Security Info=True;User ID=MyUser" SettingsObjectName="CleansingDataReference.Properties.Settings" SettingsPropertyName="NetVisConnectionString" Provider="System.Data.SqlClient" />
<Table Name="dbo.CleansedData" Member="CleansedDatas">
<Type Name="CleansedData">
  <Column Name="CleansedDataID" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
  <Column Name="CleansedOperationID" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />

我还有一个带有 ConnectionString 设置的设置文件,其值为

Data Source=MyServer\MyDB;Initial Catalog=MyCatalog;Persist Security Info=True;User ID=MyUser;Password=MyAdmin

和一个 app.config 看起来像这样:

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="CleansingDataReference.Properties.Settings.NetVisConnectionString"
        connectionString="Data Source=MyServer\MyDB;Initial Catalog=MyCatalog;Persist Security Info=True;User ID=MyUser;Password=MyPassword"
        providerName="System.Data.SqlClient" />
</connectionStrings>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

所以我在一些地方得到了连接字符串!编译后我唯一可以更改连接字符串的地方是 app.config,但它实际上并没有被应用程序使用。我必须将应用程序指向不同的数据库服务器的唯一方法是更改​​设置文件中的连接字符串并重新编译。这显然是不对的!

那么如何更改这个项目,以便在编译后编辑连接字符串。另外,如何避免使用纯文本密码?

抱歉新手问题!

--- 阿利斯泰尔。

4

1 回答 1

0

编译部署后需要修改“yourapp.exe.config”文件,bin\Debug 或 bin\Release 文件夹下没有 app.config 文件。这样您就可以使用数据上下文的无参数构造函数。

    using (var ctx = new DataClasses1DataContext())
    {
    }

除此之外,您还可以使用其他构造函数来传递连接字符串或连接,并且可以根据需要在任何文件中存储和加密您的连接字符串。

    // load from encrypted file or whatever
    string connstring = "???";
    using (var ctx = new DataClasses1DataContext(connstring))
    {
    }
于 2013-07-07T12:26:13.397 回答