您的位置:首页 > 其它

系统业务层重构开发笔记(学习别人补充自己)

2009-10-27 11:37 405 查看
数据存储层:Oracle

业务层:.Net

UI:Flex

术语:Oracle,.Net,IBatis,Castle,Flex,CodeSmith

建立Oracle数据表





生成代码

用CodeSmith建立Oracle连接





打开定义好的MapsConfig.cst模板生成IBatis使用的SQLMapSQL定义的XML文件





把另存为的XML文件,重新命名复制到UI项目的Maps目录下





再选择下面模板文件生成,方式一样都是选择相同的表

ServiceTemplate.cst

DaoTemplate.cst

IDaoTemplate.cst

DoMainTemplate.cst





把Dao和IDao文件复制到的相应项目新建目录下





把Service文件复制到相应的项目新建目录下





把DoMainTemplate.cst复制到Po项目中

将生成好的文件也改名字,与原有系统命名一致,开始项目调试,此时编译会出错。





开始调试

1.SVN在更新项目的时候如果把csproj项目文件冲突之后,会造成项目加载不起来

可以右键编辑删除这个项目的csproj文件中冲突的部分,再重新加载项目即可成功。

2.SVN在提交的时候遇到冲突的问题

可以右键红色的冲突项目,选择回滚或者更新至最新版本尝试





提交和更新完版本之后,开始调试项目中刚刚加入的文件

打开Po项目中的Suppliers.cs文件

更新命名空间

namespaceEbao51Net.Po.SuppliersModule

更新生成中错误的地方

///<summary>
///0未启用
1已启用
2暂停中
///</summary>
privateInt32status;
///<summary>
///0未启用
1已启用
2暂停中
///</summary>
publicInt32Status
{
get{returnstatus;}
set{status=value;}
}

更新后

///<summary>
///0未启用
///1已启用
///2暂停中
///</summary>
privateInt32status;
///<summary>
///
///</summary>
publicInt32Status
{
get{returnstatus;}
set{status=value;}
}


打开Persistence项目ISuppliersDao.cs与其他项目对比





添加Po的项目引用

usingEbao51Net.Po.SuppliersModule;

替换CodeSmith根据数据表名生成的实体及方法名称,使用当前文件替换成类名即可





修改SuppliersDao.cs文件

更改命名空间和添加引用空间名

usingEbao51Net.Po.SuppliersModule;
usingEbao51Net.Persistence.DataAccess;

namespaceEbao51Net.Persistence.SuppliersModule


替换成员名





打开Service项目的SuppliersManager.cs文件

删除错误的引用

usingPayment.Persistence.PayMentModule;
usingPayment.Po.PayMentModule;

修改命名空间,添加代码引用

usingEbao51Net.Po.SuppliersModule;
usingEbao51Net.Persistence.SuppliersModule;

namespaceEbao51Net.Services.SuppliersModule

替换





将SuppliersDAO修改成SuppliersDao有三处要修改

编译一下整个解决方案,发现有几处错误,不是与刚才的过程有关的,是由于之前其他同事修改造成的

签入一下代码

配置部分





配置SqlMap.config添加SQLMap的XML定义,添加:

<!--供应商-->
<sqlMapresource="${root}Suppliers.xml"/>
配置Daos.config添加定义,
<!--供应商-->
<componentid="SuppliersDao"service="Ebao51Net.Persistence.SuppliersModule.ISuppliersDao,Ebao51Net.Persistence"type="Ebao51Net.Persistence.SuppliersModule.SuppliersDao,Ebao51Net.Persistence">
<parameters>
<commonMapperFactory>${commonMapperFactory}</commonMapperFactory>
</parameters>
</component>
SuppliersDao是在以下用的的名字
namespaceEbao51Net.Services.SuppliersModule
{
publicclassSuppliersManager:ServiceBase
{
privateISuppliersDaoSuppliersDao;
publicSuppliersManager()
{
SuppliersDao=GetDao<ISuppliersDao>("SuppliersDao");
}

修改生成的XML需要修改Suppliers.xml文件,在ServiceUI的Maps目录下

删掉

<typeAliasalias="SuppliersTab"type="IBCS.Domain.ContractUI.Maps.Suppliers,IBCS.Domain"/>
换成
<typeAliasalias="Suppliers"type="Ebao51Net.Po.SuppliersModule.Suppliers,Ebao51Net.Po"/>

替换





修改

<insertid="Suppliers.Insert"parameterClass="Suppliers">
INSERTINTOPD_SUPPLIERS_TAB(ID,INSURE_ID,CODE,NAME,SHORT_NAME,PROVINCE,CITY,AREA,STATUS,REMARK,CREATE_TIME,UPDATE_TIME,PHONE,LINKMAN,BANKNAME,BANKNUMBER,CLEARINGMODE,COOPERATEMODE)
VALUES(#Id#,#InsureId#,#Code#,#Name#,#ShortName#,#Province#,#City#,#Area#,#Status#,#Remark#,#CreateTime#,#UpdateTime#,#Phone#,#Linkman#,#Bankname#,#Banknumber#,#Clearingmode#,#Cooperatemode#)
<selectKeyresultClass="int"type="pre"property="Id">
修改这句为下图-->SELECTSEQ_PD_SUPPLIER.NEXTVALASVALUEFROMDUAL
</selectKey>
</insert>


方法功能就是主键自增量

修改Properties.config文件,查看连接数据库字符串是否正确

<settings>
<addkey="provider"value="oracleClient2.0"/>
<addkey="connectionString"value="DataSource=11;PersistSecurityInfo=True;UserID=11;Password=11;Unicode=True"/>
<addkey="root"value="Maps\"/>
<addkey="assembly"value="ebao51.ServiceUI"/>
</settings>


使用测试

添加一条记录,看一下结果

usingEbao51Net.Services.SuppliersModule;
usingEbao51Net.Po.SuppliersModule;

namespaceServiceUI
{
publicpartialclassEditSuppliers:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
SuppliersManagersm=newSuppliersManager();
Supplierssu=newSuppliers();
su.Name="Name1";
sm.AddSuppliers(su);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐