2010-09-02 84 views
1

我有两个可执行文件访问包含数据访问层一个DLL对象 每个exe文件可以包含服务器上的信息和 数据库名称,连接字符串等传递连接字符串

我如何通过不同的配置配置信息到DAL对象?

很明显,我可以通过配置串到DAL对象 我每次实例化一个时间,但似乎混乱和重复作为DAL每类都需要属性的配置字符串..

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

我想知道是否有一种方法让实例化的DAL对象从调用对象读取一些属性,而无需我明确地传递它们?

回答

0

如何让所有DAL类从包含连接字符串属性的基类派生?

在这种情况下,您可以在子构造函数调用上调用基的构造函数,然后该基构造函数将成为加载连接字符串的单个位置。

如果您在两个Exe的例如:“DBConnectionString”中使用相同的ConfigKey - 那么构造器将只从配置文件“DBConnection”条目加载值 - 无论哪个exe调用dal和正确的连接值字符串将传递给它

执行将在下面的行... 对不起,使用类似C#的语法。我很多年前使用过VB。

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

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

好吧我明白从基类继承将删除我需要在DAL类中的连接字符串属性,这是很好的。 但我不知道你说什么关于传递连接字符串从exe到DAL类,因为他们instanciated。 您是否建议将它传递给每个DAL对象,因为它是在构造函数中创建的? – zebidy 2010-09-02 05:05:57

+0

@zebidy - 只编辑了代码 - 请参阅BaseDAL的构造函数。它是具有查找连接字符串逻辑的单个位置。 DAL - 在实例化时 - 将能够以这种方式获取连接字符串。不需要传递任何东西。 – InSane 2010-09-02 05:19:37

+0

这是非常棒的,非常感谢我正在寻找的指导。 – zebidy 2010-09-02 06:19:17

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。显然,连接字符串本身会因数据库而异。

+0

谢谢,但存储和检索配置字符串不是问题。 我想我想让instanciated DAL对象能够读取配置字符串,而不必将每个对象明确地作为属性传递给它们。 – zebidy 2010-09-02 05:09:01