针对网上很多抱怨的言论,写了一个EF中update对象时,通用的遍历赋值方法,以供参考
来源:互联网 发布:江南布衣淘宝代购便宜 编辑:程序博客网 时间:2024/04/30 05:41
网上很多人抱怨说EF修改对象时,逐条赋值很麻烦,其实,用一个对象给另一个对象赋值,无论是哪门面向对象的语言,都是逐条的赋值,这是编程的基本原理决定的。希望大家不要单单对EF存偏见。但既然有那么多人提这个事,说明这终究是个问题,因此花几分钟时间,用反射写了个通用的遍历赋值方法,给大家参考。
这个方法写的很简单,只是一个砖头,大家需要的话,拿去再自己完善。
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数据对象自带的验证功能),因此,大多数情况下,不推荐这么用。
0 0
- 针对网上很多抱怨的言论,写了一个EF中update对象时,通用的遍历赋值方法,以供参考
- linux下的一个病毒脚本,网上资料较少,记录以供参考
- 针对select写了一个通用的option输出函数
- 最近想写一个邮箱自动验证功能,在网上看了很多,写到自己上面出了很多问题,记录下来给后面的人一个参考
- 新手 看了网上很多资料后 学习写的一个listview
- 参考网上的一些struts2的action用法,自己写了一个Demo记录一下。
- 写的一个更新触发器,供以后参考备查
- 设计题:猫叫,老鼠逃跑,主人惊醒。在网上面看到很多不同的设计版本,自己也写一个,供讨论是否设计思路正确
- arralist 排序 网上好多的不能用 参考msn写了一个 凑和着用
- 菜鸟:自己写了一个轮播代码供分为参考,如果有什么地方你有更好的方法,可以给我留言
- Automake简单使用,网上很多的都报错,参考官方文档改了一些,行了
- 一个针对51job的过滤信息(培训)的java爬虫脚本,供大家参考,
- bootloader----自己写的,部分代码是参考网上的,转入pro模式后问题很多!
- ASP中建立Excel对象,Excel进程总是无法释放(看了网上的很多帖子,两种方法,但是都不是很好)
- 因为网上的面试题很长时间都没更新了,有很多漏洞,所以我想总结一些面试题供大家参考(因为我也即将找工作了哈哈)!第一篇
- 写了一个分页通用的
- Jquery 给一个from 赋值一个对象. 不用一个一个的写代码了
- JavaScript写一个能遍历对象和数组的通用forEach函数
- git 常用命令
- 深入浅出-iOS的TCP/IP协议族剖析&&Socket
- Evacuation Plan-POJ2175最小费用消圈算法
- Linux 中的网桥技术
- ios9网络连接问题
- 针对网上很多抱怨的言论,写了一个EF中update对象时,通用的遍历赋值方法,以供参考
- 反射实现AOP动态代理模式实例说明(Spring AOP 的实现 原理)
- 文本框输入测试用例
- commons-beanutils使用
- eclipsejdk版本问题
- [Android]使用原生Menu的一些小Tip
- Pixhawk飞控系统之uORB深入解析
- 配置LVS + Keepalived高可用负载均衡集群之图文教程
- 初识Elasticsearch