WCF RIA Services下集成NHIBERNATE的方法
【技术领域】
[0001]本发明属于架构扩展领域,尤其涉及一种WCF RIA Services下集成NHIBERNATE的方法。
【背景技术】
[0002]随着型号研制任务的增长以及研制周期的缩短,型号急迫需要一套敏捷、稳定、兼容性强的B/S结构的数据管理软件开发框架来加速研制进度。通过调研选型,确定采用微软Silverlight技术作为前端底层技术为型号提供服务,不过在数据访问方面默认微软Silverlight技术采用WCF RIA Services技术作为数据访问协议,服务器端需采用微软Entity Framework技术,由于微软Entity Framework技术推出时间较短,对相关数据库产品的支持程度也有待验证,所以在数据访问层面可能会产生如下问题:
[0003]1.Entity Framework数据访问的稳定性问题;
[0004]2.Entity Framework增加了员工的学习成本;
[0005]3.Entity Framework对数据库的兼容性还有待验证;
[0006]4.Entity Framework对数据库的底层事务控制能力弱;
[0007]Entity Framework内实体对象自定义属性配置的自由度差。
【发明内容】
[0008]为解决上述问题,本发明提供一种WCF RIA Services下集成NHIBERNATE的方法,其在提供良好的微软Silverlight富客户端UI的前提下,后端依然采用健壮稳定的NHIBERNATE技术提供数据存储服务。
[0009]本发明的WCF RIA Services 下集成 NHIBERNATE 的方法,NHIBERNATE 应用于 B/S结构数据管理系统,该B/S结构数据管理系统包括:前端、传输端和后端,其中:前端采用Silverlight对从后端传输来的数据进行数据管理,数据管理包括:数据的增加、删除、修改和查询;传输端采用WCF RIA Services在前端和后端之间进行数据传输;其关键特征在于,
[0010]后端采用NHIBERNATE进行数据存储,实现方法为:
[0011 ] 步骤I,在后端对NHIBERNATE所管理的实体对象的主键字段通过WCF框架数据主键标记注解属性 System.ComponentModel.DataAnnotat1ns.Key 进行注解;
[0012]步骤2,通过写一个RIA类实现非托管资源释放接口 System.1disposable,并用WCF RIA框架下标记发布访问类的注解属性System.ServiceModel.DomainServices.Hosting.EnableClientAccess 对非托管资源释放接口 System.1disposable 进行注解,从而在后端实现WCF RIA Services类;
[0013]步骤2包括:步骤21和步骤22,具体内容如下:
[0014]步骤21,在上述RIA类中实现NHIBERNATE的SESS1N与TRASACT10N的打开与释放,实现方法为步骤221至步骤224:
[0015]步骤221,打开 SESS1N 连接与 TRASACT10N 事务;
[0016]步骤222,利用提交事务Submit方式进行事务提交,若事务提交出错执行步骤223,若提交事务完成执彳丁步骤224 ;
[0017]步骤223,利用异常处理OnError方式进行事务回滚,完成后执行步骤224 ;
[0018]步骤224,利用资源回收Dispose方式关闭SESS1N连接与TRASACT10N事务;
[0019]步骤22,在上述RIA类中对NHIBERNATE所管理的实体对象分别对增、删、改、查四个方法进行命名,命名方法如下:
[0020](I)增加方法:公有类型返回值为空的方法名以insert开头,其对应的实体对象类型输入参数为实体对象名entity,表示为:
[0021]public void Insert实体对象类型(实体对象名entity);
[0022](2)删除方法:公有类型返回值为空的方法名以Delete开头,其对应的实体对象类型输入参数为实体对象类型entity,表示为:
[0023]public void Delete实体对象类型(实体对象类型entity);
[0024](3)修改方法:公有类型返回值为空的方法名以Update开头,其对应的实体对象类型输入参数为实体对象类型entity,表示为:
[0025]public void Update实体对象类型(实体对象类型entity);
[0026](4)查询方法:公有类型返回值为空的方法名以IQueryable开头,其对应的实体对象类型输入参数为实体对象类型Get,表示为:
[0027]public IQueryable〈实体对象类型〉Get实体对象名O
[0028]步骤3,在前端更新WCF RIA Services的对象引用,即可对NHIBERNATE所管理的实体对象类型进行增、改、删、查操作。
[0029]有益效果:
[0030]在微软WCF RIA Services技术下采用NHIBERNATE技术替换微软EntityFramework技术,使得所开发的信息系统前端采用微软Silverlight技术,传输端采用微软WCF RIA Services技术,后端采用NHIBERNATE技术,最终向型号研制人员提供良好的微软Silverlight富客户端UI的前提下,后端依然采用健壮稳定的NHIBERNATE技术提供数据存储服务,保证了数据访问的稳定性和数据库的兼容性。
【附图说明】
[0031]图1为本发明的WCF RIA Services下集成NHIBERNATE的方法示意图;
[0032]图2为本发明的WCF RIA Services下集成NHIBERNATE的方法中后端代码示例图。
[0033]图3为本发明的WCF RIA Services下集成NHIBERNATE的方法中前端代码示例图。
【具体实施方式】
[0034]本发明是在微软WCF RIA Services技术下采用NHIBERNATE技术替换微软EntityFramework技术,使得所开发的信息系统前端采用微软Silverlight技术,传输端采用微软WCF RIA Services技术,后端采用NHIBERNATE技术,最终向型号研制人员提供良好的微软Silverlight富客户端UI的前提下,后端依然采用健壮稳定的NHIBERNATE技术提供数据存储服务。
[0035]如图1所示,基于微软Silverlight技术的B/S架构分为前端、传输端、后端与数据库四个范畴,本发明是在微软Silverlight技术强制使用的微软WCF RIA Services架构下替换掉自带的Entity Framework技术,采用NHIBERNATE技术替代。
[0036]用NHIBERNATE技术替换微软Entity Framework技术,并且需要保证能正常通过微软WCF RIA Services技术进行数据传输,必须从实体对象与DomainService两个方面实现,实现步骤如下,后端代码示