Juvy

I Believe Persistence.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面向对象开发过程中大家经常碰到的一个东东——数据实体。

在实体对象实例的某一个信息被修改后,面临一个数据保存的问题,网上可以搜索到很多不同的保存方法,这里提供小虾(本人)曾经用过的几种常用方法:

  1. 根据需要,将修改过的属性组合成SQL语句(未修改的属性不作处理),然后执行数据库命令保存数据;
  2. 提前写好实体对象的SQL语句,如string sql = "UPDATE TableName SET ColumnName1 = {0}, ColumnName2 = {1}, ...  WHERE PK_ColumnName = {N}",然后将整个实体对象作为参数传入,将保存实体对象的SQL语句中的参数替换成相应的值,得到保存数据的SQL语句,然后调用数据库命令保存数据;
  3. 将实体对象实例中的每一个数据库字段属性成员的“属性名”和“属性值”通过反射的方法读取出来,然后拼接字符串,然后调用数据库命令来保存数据;
  4. ...(或许还有很多更加高效的数据库实体类,希望大家踊跃拍砖)。

在这里,小虾分别说说每一种方法的优缺点。

                               优点                                                                                  缺点

第一种        1.支持差异数据保存,即只保存修改过的数据库字段;               1.需要写非常多的SQL语句。

                2.由于是已经是编辑好的SQL语句,所以性能还可以。

第二种        1.不支持差异数据保存;                                                  1.一个实体对象至少需要一个SQL语句,工作量也是很客观的。

                2.执行效率也还可以。

第三种        1.不支持差异数据保存。                                                  1.同样是由于反射操作,带来的性能影响也是比较大的。

                2.由于是通过反射方式来拼接SQL语句,所以省掉了

                   很多写sql语句的工作量。

如上三种方法都很难达到各位的需求,不知道是否更好的数据库实体设计方法,还是那句话,欢迎大家大胆拍砖!

 

 

@追加内容

哎,一个个只是支持,顶下什么的,悲惨啊!

看来还得去baidu,google了。

 

 

 

ASP.NET开发技术交流群: 67511751(人员招募中...)

posted on 2011-05-23 17:37  Juvy  阅读(1460)  评论(13编辑  收藏  举报
QQ:1054930154; Email:david.telvent@gmail.com; QQ群:67511751