面向对象开发过程中大家经常碰到的一个东东——数据实体。
在实体对象实例的某一个信息被修改后,面临一个数据保存的问题,网上可以搜索到很多不同的保存方法,这里提供小虾(本人)曾经用过的几种常用方法:
- 根据需要,将修改过的属性组合成SQL语句(未修改的属性不作处理),然后执行数据库命令保存数据;
- 提前写好实体对象的SQL语句,如string sql = "UPDATE TableName SET ColumnName1 = {0}, ColumnName2 = {1}, ... WHERE PK_ColumnName = {N}",然后将整个实体对象作为参数传入,将保存实体对象的SQL语句中的参数替换成相应的值,得到保存数据的SQL语句,然后调用数据库命令保存数据;
- 将实体对象实例中的每一个数据库字段属性成员的“属性名”和“属性值”通过反射的方法读取出来,然后拼接字符串,然后调用数据库命令来保存数据;
- ...(或许还有很多更加高效的数据库实体类,希望大家踊跃拍砖)。
在这里,小虾分别说说每一种方法的优缺点。
优点 缺点
第一种 1.支持差异数据保存,即只保存修改过的数据库字段; 1.需要写非常多的SQL语句。
2.由于是已经是编辑好的SQL语句,所以性能还可以。
第二种 1.不支持差异数据保存; 1.一个实体对象至少需要一个SQL语句,工作量也是很客观的。2.执行效率也还可以。
第三种 1.不支持差异数据保存。 1.同样是由于反射操作,带来的性能影响也是比较大的。
2.由于是通过反射方式来拼接SQL语句,所以省掉了
很多写sql语句的工作量。
如上三种方法都很难达到各位的需求,不知道是否更好的数据库实体设计方法,还是那句话,欢迎大家大胆拍砖!
@追加内容
哎,一个个只是支持,顶下什么的,悲惨啊!
看来还得去baidu,google了。
ASP.NET开发技术交流群: 67511751(人员招募中...)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探