?? ??? 在我的一文中,我提到用internal string _raw = ProjectName.Properties.Settings.Default.ConnectionString;這條語句來初始化數(shù)據(jù)庫連接字符串,現(xiàn)在想想,這種方法還有一定的局限性,即只能用在只有一個(gè)數(shù)據(jù)庫的系統(tǒng);如果我們開發(fā)的組件或程序集(Assembly)需要用多個(gè)數(shù)據(jù)庫,則還要想其他辦法:)
??????一種方法是我最開始提到的原始方法:“應(yīng)用程序中手動(dòng)給屬性ConnectionString賦值,但這樣的話,每個(gè)業(yè)務(wù)實(shí)體在new完之后,都要給ConnectionString賦值”。感覺這種方法不大爽。試想一下,在構(gòu)建N層架構(gòu)的應(yīng)用程序時(shí),Concrete Class的上一層的開發(fā)人員還要去了解當(dāng)前操作的Concrete Class是要操作哪個(gè)數(shù)據(jù)庫,對應(yīng)哪個(gè)數(shù)據(jù)庫中的哪張表,多郁悶...
? ??? 可不可以將數(shù)據(jù)庫連接操作也封裝起來?答案是可以的!解決方法是:在dOOdad生成的Concrete Class的構(gòu)造函數(shù)中設(shè)置數(shù)據(jù)庫連接字符串,eg:
public class Employee : _Employee
{
??? public Employee ()
??? {
??????? this.ConnectionString = Properties.Settings.Default.StrConnectTo*DB;
??? }
??? // Other Members
}
??? 這樣一來,Concrete Class的上一層的開發(fā)人員就不必關(guān)心底層有哪些個(gè)數(shù)據(jù)庫、哪些ConcreteClass需要操作哪些數(shù)據(jù)庫了:)