强型别非常不灵活,
我主要是受Scott Mitchell 的那75篇Data Access Tutorials 的影响
使用TYPED DATASET结果吃尽苦头
Scott 的那75篇Data Access Tutorials太毒了
@WCF群组博客
请举出具体例子,否则这种话说了太没意义了,而且不同size的project试用场景都是不同的。
个人认为,对于数据绑定,弱类型方便得多
问题一所述的问题不是问题,参数多了或添加参数,直接加个 <InsertParamter 就可以了
@nicye
不可能只多了 InsertParamter 就可以,你沒有去更改 Insert 方法的相關參數怎麼可能會處理到該欄位。
@jeff377
我是拿 DetailsView 这个控件说的
我用它来做添加/修改功能的确是加个 InsertParamter 和添加一个 <%# Bind 就可以了
不添加 Bind 也行,那需要在 Inserting/Updating 事件里设置它的值
"若异动字段非常多":
无论用什么方法,都要修改数据访问层 、Model和 表示层。你有其他万能方法吗?即使有ORM,你还不是也要修改映射文件、表示层。
“当你的系统非常庞大时,例如有上千个窗体,当这些窗体若需同时新增一个字段时.....”:说明表示层你没有使用用户控件。
“批次异动问题”:个人感觉批量更新,在web程序中的使用问题有待商量,既然已经提交到wen服务器了,也不差再多访问数据库服务器一下了,毕竟web程序中最耗时的是,网络trip,相比处理时间而言。 批量更新更适用于WinForm程序。
强类型DataSet的问题:个人感觉比弱类型好。
@要有好的心情
新增一个字段(字段)是否要同步更新中间层,这个要看你的中间层怎么写,我开发的系统所有的字段都是用定义出来的,也就是开发人员不用直接去下 SQL 语法,这种情形下就算增减字段,中间层是无预做任何异动。
批次异动的问题,在一般的 Web 系统比较不会发生,不过若是开发 Web ERP,那批次异动的需求就很大。就像你说的,这种批次异动比较适合使用 WinForm,这点我当然也了解,不过客户的需求就是要硬要使用 WebForm 而不用 WinForm 的 ERP 系统,那就没辨法了。
确实中间层的可以用数据库的架构信息来同步,不知道你有没有Model 类,有的话,如何同步数据库架构信息,有映射文件吗?
一般来说,我如果在程序中是使用了SQL或动态生成了SQL,基于一个业务对象都会写一次(除非特殊情况),这样修改时,一般就修改这一个地方,对于所有业务对象都要加减某字段,由基类控制。
关于批量更新的问题:
客户要求批量更新,这是需求问题,而不是程序设计问题,既然客户这样要求肯定要这样做,另外使用ObjectDataSoruce作为代理来处理数据,并不一定让你将数据直接提交到DB,ObjectDataSoruce的UpdateMethod、InsertMethod、DeleteMethod所关联的业务逻辑层方法,没有确定一定要操作数据库,你也可以仅处理强类型集合,不过这些数据要缓存一下,表示层提供集中提交的入口,需要集中提交时,从缓存中获取数据,一次性提交所有变更,这个DataSet本身已提供。
@要有好的心情
针对批量更新的问题,如同你说的一样,我设计的TBObjectDataSoruce 控件的 UpdateMethod、InsertMethod、DeleteMethod
就是直接存取 TBBusinessObject 控件,并不是直接呼叫中间层去异动数据库。