談到的是Winform開發框架中字典數據管理在字典數據數據管理工程項目中我們看到有兩個不同的數據訪問層工廠模式通過不同的配置調用不同的數據訪問層
好久沒寫博客了除了是工作較忙的原因外其實是也一直在想如何整合我所有的開發經驗及技術積累開發過很多Winform共享軟件ASPNET的WebForm項目發現很多東西是相互關聯很緊密的但往往我們太忙太懶要好好整理並整理出棒棒的一般比較難但我們沒有停步夢想總會慢慢接近並實現在做了很多項目之後發現人的惰性或者慣性很大因此有機會得好好整理下開發的成功優化再優化用的時候就越來越順手了
在所有開發過的項目過程很多如權限管理字典數據管理模塊都是非常常用的模塊本文主要想介紹下提煉出來各個項目均可通用的字典數據管理系統(或者叫做模塊更為適合)在介紹之前我想介紹下我的整合路線及一些想法如下所示
其中框架中所有介紹的內容均為現有開發框架中有的東西及特性如果要了解Winform框架的多維特點可以現在最新的共享軟件《倉庫管理系統》具體可以參考文章《從開發的軟件《備件倉庫管理系統》總結的一些經驗》進行了解該共享軟件除了整合眾多優秀的功能外一個特點就是數據管理模塊也得到了升華
在Winform框架中其中權限管理系統字典管理系統都是可以做成獨立的程序來使用而且應該可以在程序中引用來查詢或者獲取相關的字典數據如找某個鍵值的字典列表作為下拉列表而且由於實際項目總有點是SqlServer有的是Access數據庫的所以支持多數據庫是最好的選擇
在字典數據數據管理工程項目中我們看到有兩個不同的數據訪問層工廠模式通過不同的配置調用不同的數據訪問層從而實現SqlServerAccess等數據庫的支持當然可以擴展更多的數據庫支持我們先來看看工程項目的視圖如下所示
配置文件如下所示
<?xml version= encoding=utf ?>
<configuration>
<configSections>
<section name=dataConfiguration
type=MicrosoftPracticesEnterpriseLibraryDataConfigurationDatabaseSettings MicrosoftPracticesEnterpriseLibraryData/>type=MicrosoftPracticesEnterpriseLibraryDataConfigurationDatabaseSettings MicrosoftPracticesEnterpriseLibraryData/>type=MicrosoftPracticesEnterpriseLibraryDataConfigurationDatabaseSettings MicrosoftPracticesEnterpriseLibraryData/>
</configSections>
<connectionStrings>
<add name=DataAccess providerName=SystemDataOleDb connectionString=Provider=MicrosoftJetOLEDB;Data Source=E:我的應用程序數據字典SqlDictionaryWHCDictionaryUIinDebugOrderWatermdb;User ID=Admin;Jet OLEDB:Database Password=; />
<add name=DataAccess providerName=SystemDataSqlClient
connectionString=Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=/>connectionString=Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=/>connectionString=Persist Security Info=False;Data Source=(local);Initial Catalog=Warehouse;User ID=sa;Password=/>
</connectionStrings>
<dataConfiguration defaultDatabase=DataAccess/>
<appSettings>
<!軟件名稱>
<add key=ApplicationName value=深田之星倉庫管理系統/>
<!開發商名稱>
<add key=Manufacturer value=廣州愛啟迪技術有限公司/>
<!數據字典的數據庫類型accesssqlserver等>
<add key=ComponentDbType value=access/>
</appSettings>
</configuration>
我們通過DictionaryDbType來切換不同的數據庫不用修改代碼實現多數據庫支持當然不同的數據庫需要創建不同的數據庫文件不過數據庫結構基本上是一致的
我們看看該字典管理模塊的最終效果如下所示
字典數據模塊做成獨立的程序後一個可以獨立運行也可以在宿主程序中通過DLL方式調用類庫來獲取字典數據如下所示
private void InitDictItem()
{
thistxtManufactureItemsClear();
thistxtManufactureItemsAddRange(DictItemUtilGetDictByDictType(供貨商));
thistxtBigTypeItemsClear();
thistxtBigTypeItemsAddRange(DictItemUtilGetDictByDictType(備件屬類));
thistxtItemTypeItemsClear();
thistxtItemTypeItemsAddRange(DictItemUtilGetDictByDictType(備件類別));
thistxtSourceItemsClear();
thistxtSourceItemsAddRange(DictItemUtilGetDictByDictType(來源));
thistxtWareHouseItemsClear();
thistxtWareHouseItemsAddRange(DictItemUtilGetAllWareHouse()ToArray());
thistxtDeptItemsClear();
thistxtDeptItemsAddRange(DictItemUtilGetDictByDictType(部門));
}
From:http://tw.wingwit.com/Article/program/net/201311/13777.html