针对网上很多抱怨的言论,写了一个EF中update对象时,通用的遍历赋值方法,以供参考
2016-02-24 10:35
302 查看
网上很多人抱怨说EF修改对象时,逐条赋值很麻烦,其实,用一个对象给另一个对象赋值,无论是哪门面向对象的语言,都是逐条的赋值,这是编程的基本原理决定的。希望大家不要单单对EF存偏见。但既然有那么多人提这个事,说明这终究是个问题,因此花几分钟时间,用反射写了个通用的遍历赋值方法,给大家参考。
这个方法写的很简单,只是一个砖头,大家需要的话,拿去再自己完善。
用反射做逻辑处理,本身效率很低,如果是做数据表处理,还有一定的风险(缺少.net数据对象自带的验证功能),因此,大多数情况下,不推荐这么用。
这个方法写的很简单,只是一个砖头,大家需要的话,拿去再自己完善。
public class Temp { public int id { get; set; } public string name { get; set; } public string phone { get; set; } public Temp() { } public Temp(string name, string phone) { this.name = name; this.phone = phone; } } public void SetValue(Object newObj, Object srcObj) { var t1s = srcObj.GetType().GetProperties(); var t2s = newObj.GetType().GetProperties(); foreach (var p in t1s) { foreach (var q in t2s) { if (q.Name == p.Name) {// 这里有可能需要对属性的类型和值做一些判断和转换,大家自己根据自己的业务添加处理,估计不会很多 q.SetValue(newObj, p.GetValue(srcObj), null); } } } } public void test() { var t1 = new Temp("张三","13677889966"); t1.id = 1; var t2 = new Temp(); t2.id = 2; SetValue(t2, t1); }
用反射做逻辑处理,本身效率很低,如果是做数据表处理,还有一定的风险(缺少.net数据对象自带的验证功能),因此,大多数情况下,不推荐这么用。
相关文章推荐
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- 文件遍历排序函数
- C#托管堆对象实例包含内容分析
- C#实现获取不同对象中名称相同属性的方法
- Lua 学习笔记之C API 遍历 Table实现代码
- Java Runtime Environment 5.0 Update 12 下载
- javascript asp教程第十一课--Application 对象
- sql update 触发器 可获得被update的行的信息
- Mysql 原生语句中save or update 的写法汇总
- oracle中UPDATE nowait 的使用方法介绍
- sqlserver中delete、update中使用表别名和oracle的区别
- SQL Server UPDATE语句的用法详解
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- C#遍历文件夹后上传文件夹中所有文件错误案例分析
- C#中遍历Hashtable的4种方法
- VBS教程:对象-正则表达式(RegExp)对象
- SQL Server中的XML数据进行insert、update、delete
- C#检查指定对象是否存在于ArrayList集合中的方法
- SQL Server中的XML数据进行insert、update、delete操作实现代码