Vb.net 在程序集之间传递连接字符串

Vb.net 在程序集之间传递连接字符串,vb.net,Vb.net,我有两个可执行文件,可以访问包含数据访问层对象的DLL 每个exe都可以有不同的配置,其中包含服务器和服务器上的信息 数据库名称、连接字符串等 如何将配置信息传递给DAL对象 显然,我可以将配置字符串传递给DAL对象 每次我都实例化一个,但这看起来很混乱和重复,因为DAL中的每个类都需要配置字符串的属性 谁能告诉我有没有更好的办法 我想知道是否有一种方法可以让实例化的DAL对象从调用对象中读取一些属性,而不必显式地传递它们?让所有DAL类都派生自包含连接字符串属性的基类怎么样 在这种情况下,您可

我有两个可执行文件,可以访问包含数据访问层对象的DLL 每个exe都可以有不同的配置,其中包含服务器和服务器上的信息 数据库名称、连接字符串等

如何将配置信息传递给DAL对象

显然,我可以将配置字符串传递给DAL对象 每次我都实例化一个,但这看起来很混乱和重复,因为DAL中的每个类都需要配置字符串的属性

谁能告诉我有没有更好的办法


我想知道是否有一种方法可以让实例化的DAL对象从调用对象中读取一些属性,而不必显式地传递它们?

让所有DAL类都派生自包含连接字符串属性的基类怎么样

在这种情况下,您可以在子构造函数调用时调用基构造函数,然后该基构造函数将是加载连接字符串的唯一位置

如果在两个Exe中使用相同的ConfigKey,例如:“DBConnectionString”-则构造函数将仅从配置文件“DBConnection”条目加载值-无论哪个Exe调用dal,连接字符串的正确值都将传递给它

实现将是以下几行内容。。。 很抱歉使用了类似C的语法。我上次使用VB是在很多年前

class BaseDAL
{
  protected String _connectionString;
  BaseDAL ()
  {
    _connectionString = ConfigurationManager.AppSettings("DBConnectionString") 
  }
  ....    
}

class ChildDAL : BaseDal
{
  ChildDAL():base()
  {
  ....
  }
}

也许我遗漏了一些东西,但您可以将连接字符串放入App.config或Web.config

<appSettings>
    <!-- This sets the server, the username, and the password to connect to the database -->
    <add key="SqlConnectionString"
             value="Data Source=servername;Database=dbname;User ID=username;Password=password;Charset=utf8;"
    />
</appSettings>
我想每个EXE只有一个App.config

如果您确实为每个运行的EXE实例拥有不同的连接字符串,您可以将其存储在缓存中,但我不认为这是您正在做的事情


编辑:我在示例中使用的连接字符串将连接到MySQL。显然,连接字符串本身会因数据库而异。

好的,我知道从基类继承将消除我在DAL类中对连接字符串属性的需要,这很好。但是我不知道你说的是什么,当它们被实例化时,将连接字符串从exe传递到DAL类。您是否建议在构造函数中创建DAL对象时将其传递给每个DAL对象?@zebidy-刚刚编辑了代码-请参考BaseDAL的构造函数。它是具有查找连接字符串逻辑的单一位置。DAL(在实例化时)将能够通过这种方式获取连接字符串。不需要传递任何东西。这是awesom-非常感谢我一直在寻找的指导。谢谢,但是存储和检索配置字符串不是问题。我想我希望实例化的DAL对象能够读取配置字符串,而不必将每个字符串作为属性显式地传递给它们。
Shared connectionString As String = ConfigurationManager.AppSettings("SqlConnectionString")