DataBase => O/R mapping Class => UI 解决方案(.NET/CS/WinForm/Linq)

继续搬家4年半前的msn space上的内容。
8/31/2008 1:37:38 AM

注:由于基于Linq,对于性能要求很高的项目或模块不一定适合本方案。对于复杂查询要求较高的情况,本方案也不一定适用。本方案主要针对中小型项目,普通信息维护管理系统。

从数据库,到数据访问层,再到界面。一层层的搭,大量的重复劳动。耐心再好的人也会厌倦吧?

比如一个叫做Employee表,EmpID,Name,OnBoardDate,Birthday,Manager,Title等字段,那么,最简单的,要做 新增/修改/删除/查询 4个功能,不一定要ORM,也不一定要数据访问层独立出来,但最麻烦的应该就是画界面了,当然,还有输入数据合法性检查等等。设想一下,表结构设计+表创建,30分钟;增删改查 功能函数,30+10+20+60=120分钟,界面算上调整和格式检查得要1天吧。以上时间算上了基本的测试时间。按平均速度算,应该算是不宽裕了(不排除0.5天或者2天才能搞定的)。

现在,微软随C# 3.0和Visual Stuido 2008一同发布了Linq,其中的Linq2Sql是一套轻量级的Linq解决方案,在数据库设计完成后,即可通过拖拽的方式得到一套ORM类。同时,还包含延时加载机制,就数据查询来说,是通过Reader对象,所以效率来说不会比DataTable/DataSet低。其他特点不再多说,网上满地的介绍。我看中的,在于对于数据库设计信息,完全的包含到了类中。这就为根据这些信息,自动生成界面成为可能。

看一下例子,还是上面描述的员工表:

image

在Linq2Sql的设计器中,加上 经理->EmpID 的关联关系。ORM这层就算完成了,之后,如果作为基础数据,可以使用已经封装好了frmMaintenance类。如下:

frmMaintenance f = new frmMaintenance("Empolyee", null, typeof(Employee), true, true, null, null, null, null, null, null, null);

为null的参数中包括格式验证/权限验证可用的托管,额外的查询条件限制等。运行效果如图:

image

当然,字段也许还需要修饰一下,为了看出效果,将字段显示为中文,通过提供的配置工具,可以为ORM对象设置默认的字段信息,

image

还为外键/明细档等提供了额外的属性甚至可以设定外键显示的字段以及配置信息的嵌套功能。最终可以把这些配置序列化保存,作为默认配置。当然也可以为某些控件做个性化设置。

image image

如果要做查询的,可以直接拖一个封装好的Query控件:

image

以及3句代码执行以下绑定设置:

querier1.DataContext = new DataClasses1DataContext();
querier1.MappingTable = typeof(Employee);
querier1.DataBind();

看一下执行效果:

image

可以根据各个字段填入条件,做符合查询。于是,最简单的增删改查,在数据库设计完毕后,仅需要5分钟和4句代码就可以搞定了。当然,还包括一些复杂功能,如数据权限处理,在查询条件上再附加条件,等等,或者希望在更复杂的界面中,集成编辑功能,等,都留有对应的控件和接口。

下面是一个,使用本框架搭出的一个小程序的2个界面:

image image

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值