利用反射快速给Model实体赋值

面对合同归档业务,需要将大量字段从原合同表复制到历史表。传统SQL方式易出错且不优雅。本文提出利用反射技术,通过创建与原Model相似的新Model,循环赋值并手动处理新增字段,实现更简洁、灵活的代码解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

试想这样一个业务需求:有一张合同表,由于合同涉及内容比较多所以此表比较庞大,大概有120多个字段。现在合同每一次变更时都需要对合同原始信息进行归档一次,版本号依次递增。那么我们就要新建一张合同历史表,字段跟原合同表一模一样,此外多了一个 合同版本号 字段。在归档时如何把原始合同信息插入到合同历史表呢?

        很容易就能想到的一种解决方法:

insert into 合同历史表(字段1,字段2,字段3…………字段120,版本号) select   字段1,字段2,字段3…………字段120,0 as 版本号 from 合同表 where 合同ID='xxxxxxx’

这样当然是能实现我们的功能的,但是看到了吗?由于表的字段太多,导致SQL看起来很不优雅,而且字段之间的对应很容易出问题。联想起之前看过的 利用反射给model赋值的例子想出来下面的一个解决方法:

       现在假设两个实体class1、class2,class2只比class1多一个字段newid,其它字段一模一样。简单定义如下:


class Class1  
    {  
        private string id;  
  
        public string Id  
        {  
            get { return id; }  
            set { id = value; }  
        }  
        private string name;  
  
        public string Name  
        {  
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值