我有两个可执行文件访问包含数据访问层对象的DLL 每个exe都可以有一个不同的配置包含服务器上的信息和 数据库名称,连接字符串等。
如何将配置信息传递给DAL对象?
显然我可以将配置字符串传递给DAL对象 每次我实现一个,但这似乎是混乱和重复的,因为DAL中的每个类都需要Config字符串的属性..
有人能告诉我是否有更好的方法?
我想知道实例化的DAL对象是否有办法从调用对象中读取一些属性而不必显式传递它们?
答案 0 :(得分:0)
让所有DAL类派生自包含连接字符串属性的基类怎么样?
在这种情况下,您可以在子构造函数调用上调用base的构造函数,然后该基本构造函数将成为加载Connection字符串的单个位置。
如果在两个Exe中都使用了相同的ConfigKey,例如:“DBConnectionString” - 那么构造函数只会从配置文件“DBConnection”条目中加载值 - 无论哪个exe调用dal和连接字符串的正确值将被传递给它
实施将是以下几点...... 很抱歉使用类似C#的语法。我很久以前就习惯使用VB了。
class BaseDAL
{
protected String _connectionString;
BaseDAL ()
{
_connectionString = ConfigurationManager.AppSettings("DBConnectionString")
}
....
}
class ChildDAL : BaseDal
{
ChildDAL():base()
{
....
}
}
答案 1 :(得分:0)
也许我错过了一些东西,但你可以把连接字符串放到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>
然后,在您的代码中,您只需阅读:
Shared connectionString As String = ConfigurationManager.AppSettings("SqlConnectionString")
我认为每个EXE只有一个App.config。
如果你真的为每个运行EXE的实例使用不同的连接字符串,你可以将它存储在缓存中,但我不认为这就是你正在做的事情。
编辑:我在我的示例中使用的连接字符串将连接到MySQL。显然,连接字符串本身会因数据库而异。