谈到的是Winform开发框架中字典数据管理在字典数据数据管理工程项目中我们看到有两个不同的数据访问层工厂模式通过不同的配置调用不同的数据访问层
好久没写博客了除了是工作较忙的原因外其实是也一直在想如何整合我所有的开发经验及技术积累开发过很多Winform共享软件ASPNET的WebForm项目发现很多东西是相互关联很紧密的但往往我们太忙太懒要好好整理并整理出棒棒的一般比较难但我们没有停步梦想总会慢慢接近并实现在做了很多项目之后发现人的惰性或者惯性很大因此有机会得好好整理下开发的成功优化再优化用的时候就越来越顺手了
在所有开发过的项目过程很多如权限管理字典数据管理模块都是非常常用的模块本文主要想介绍下提炼出来各个项目均可通用的字典数据管理系统(或者叫做模块更为适合)在介绍之前我想介绍下我的整合路线及一些想法如下所示
其中框架中所有介绍的内容均为现有开发框架中有的东西及特性如果要了解Winform框架的多维特点可以现在最新的共享软件《仓库管理系统》具体可以参考文章《从开发的软件《备件仓库管理系统》总结的一些经验》进行了解该共享软件除了整合众多优秀的功能外一个特点就是数据管理模块也得到了升华
在Winform框架中其中权限管理系统字典管理系统都是可以做成独立的程序来使用而且应该可以在程序中引用来查询或者获取相关的字典数据如找某个键值的字典列表作为下拉列表而且由于实际项目总有点是SqlServer有的是Access数据库的所以支持多数据库是最好的选择
在字典数据数据管理工程项目中我们看到有两个不同的数据访问层工厂模式通过不同的配置调用不同的数据访问层从而实现SqlServerAccess等数据库的支持当然可以扩展更多的数据库支持我们先来看看工程项目的视图如下所示
配置文件如下所示
<?xmlversion=encoding=utf?>
<configuration>
<configSections>
<sectionname=dataConfiguration
type=MicrosoftPracticesEnterpriseLibraryDataConfigurationDatabaseSettingsMicrosoftPracticesEnterpriseLibraryData/>type=MicrosoftPracticesEnterpriseLibraryDataConfigurationDatabaseSettingsMicrosoftPracticesEnterpriseLibraryData/>type=MicrosoftPracticesEnterpriseLibraryDataConfigurationDatabaseSettingsMicrosoftPracticesEnterpriseLibraryData/>
</configSections>
<connectionStrings>
<addname=DataAccessproviderName=SystemDataOleDbconnectionString=Provider=MicrosoftJetOLEDB;DataSource=E:我的应用程序数据字典SqlDictionaryWHCDictionaryUIinDebugOrderWatermdb;UserID=Admin;JetOLEDB:DatabasePassword=;/>
<addname=DataAccessproviderName=SystemDataSqlClient
connectionString=PersistSecurityInfo=False;DataSource=(local);InitialCatalog=Warehouse;UserID=sa;Password=/>connectionString=PersistSecurityInfo=False;DataSource=(local);InitialCatalog=Warehouse;UserID=sa;Password=/>connectionString=PersistSecurityInfo=False;DataSource=(local);InitialCatalog=Warehouse;UserID=sa;Password=/>
</connectionStrings>
<dataConfigurationdefaultDatabase=DataAccess/>
<appSettings>
<!软件名称>
<addkey=ApplicationNamevalue=深田之星仓库管理系统/>
<!开发商名称>
<addkey=Manufacturervalue=广州爱启迪技术有限公司/>
<!数据字典的数据库类型accesssqlserver等>
<addkey=ComponentDbTypevalue=access/>
</appSettings>
</configuration>
我们通过DictionaryDbType来切换不同的数据库不用修改代码实现多数据库支持当然不同的数据库需要创建不同的数据库文件不过数据库结构基本上是一致的
我们看看该字典管理模块的最终效果如下所示
字典数据模块做成独立的程序后一个可以独立运行也可以在宿主程序中通过DLL方式调用类库来获取字典数据如下所示
privatevoidInitDictItem()
{
thistxtManufactureItemsClear();
thistxtManufactureItemsAddRange(DictItemUtilGetDictByDictType(供货商));
thistxtBigTypeItemsClear();
thistxtBigTypeItemsAddRange(DictItemUtilGetDictByDictType(备件属类));
thistxtItemTypeItemsClear();
thistxtItemTypeItemsAddRange(DictItemUtilGetDictByDictType(备件类别));
thistxtSourceItemsClear();
thistxtSourceItemsAddRange(DictItemUtilGetDictByDictType(来源));
thistxtWareHouseItemsClear();
thistxtWareHouseItemsAddRange(DictItemUtilGetAllWareHouse()ToArray());
thistxtDeptItemsClear();
thistxtDeptItemsAddRange(DictItemUtilGetDictByDictType(部门));
}