最近做项目需要读取修改前数据库中被修改的数据所有的信息,一开始想要在model层的每个类都写一个函数return一串字符串,

但是由于表太多,实体类数量太大,写出来太浪费时间,所以决定写一个通用的方法输出

/// <summary>
/// 循环输出实体类的各属性名称和属性值
/// </summary>
/// <param name="Entity">实体</param>
/// <returns></returns>
public string ResolvingTableRow(object Entity)
{
  Type EntType = Entity.GetType();
  PropertyInfo[] propertys = EntType.GetProperties();
  string tempName = string.Empty;
  foreach (PropertyInfo pi in propertys)
  {
    tempName = tempName + pi.Name+":";
    string tem = pi.ToString();
    if (pi.GetValue(Entity, null) != null)
    {
      tempName = tempName + pi.GetValue(Entity, null).ToString()+";";
    }
    else
    {
      tempName = tempName + " ;";
    }
  }
  return tempName;
}

既然有通用的遍历实体类属性值的方法,那就一定也有自动生成实体类的方法,两种方法的代码大体上没什么区别

/// 根据类型填充单个实体类
/// </summary>
/// <param name="Souce"></param>
/// <param name="Entity"></param>
/// <param name="EntType"></param>
/// <returns></returns>
public static object ResolvingTableRow(DataRow Souce, object Entity)
{
  Type EntType = Entity.GetType();
  object User = Activator.CreateInstance(EntType);
  PropertyInfo[] propertys = EntType.GetProperties();
  string tempName = string.Empty;
  foreach (PropertyInfo pi in propertys)
  {
    tempName = pi.Name;//将属性名称赋值给临时变量
    if (Souce.Table.Columns.Contains(tempName))
    {
      // 判断此属性是否有Setter
      if (!pi.CanWrite) continue;//该属性不可写,直接跳出
      //取值 011
      object value = Souce[tempName];
      if (value != DBNull.Value)
      {
        //value = CheckObjValue(value, pi);
        //如果非空,则赋给对象的属性
        pi.SetValue(User, value, null);
      }
    }
  }
  return User;
}

asp.net 自动遍历实体类的更多相关文章

  1. Asp.Net Core如何根据数据库自动生成实体类

    通过引用Nuget包添加实体类 运行 Install-Package Microsoft.EntityFrameworkCore.SqlServer 运行 Install-Package Micros ...

  2. 使用T4为数据库自动生成实体类

    T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...

  3. 【转】java遍历实体类的属性和数据类型以及属性值

    和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...

  4. java中循环遍历实体类的属性和数据类型以及属性值

    package com.walkerjava.test; import java.lang.reflect.Field; import java.lang.reflect.InvocationTarg ...

  5. Mybatis自动生成实体类

    Maven自动生成实体类需要的jar包 一.pom.xml中 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

  6. Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

  7. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for ...

  8. Springboot mybatis generate 自动生成实体类和Mapper

    https://github.com/JasmineQian/SpringDemo_2019/tree/master/mybatis Springboot让java开发变得方便,Springboot中 ...

  9. java遍历实体类的属性和数据类型以及属性值

    遍历实体类的树形和数据类型一级属性值 /** * 遍历实体类的属性和数据类型以及属性值 * @param model * @throws NoSuchMethodException * @throws ...

随机推荐

  1. JSON和XML:不可同日而语

    [编者按]本文作者 Yegor Bugayenko 是 Teamed.io 公司的联合创始人,在软件质量和工程管理方法领域有深入的研究.本文中,作者通过对比 JSON ,向大家更详细地阐述了 XML ...

  2. android和struts2实现android文件上传

    1.开发准备如下2个工具类 package org.lxh.util; import java.io.BufferedReader; import java.io.InputStreamReader; ...

  3. android调用百度地图API

    http://blog.csdn.net/lyq8479/article/details/6384428

  4. Eclipse没法自动补全代码解决

    Eclipse没法自动补全代码解决   Eclipse无法自动补全代码解决 Window->Java->Editor->Content Assist->Advanced

  5. HDU -- 4496

    D-City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Subm ...

  6. linux0.12 编译过程

    感谢这篇文章的作者:    http://www.cnblogs.com/strugglesometimes/p/4231359.html 编译是个很蛋疼的事情,本想把linux0.12在bochs上 ...

  7. 常用的MySQL图形化管理软件

    本博文的主要内容有 .SQLyog软件的安装.下载和使用 .Navicat for MySQL软件的安装.下载和使用 1.SQLyog软件的安装.下载和使用 2.Navicat for MySQL软件 ...

  8. Spring3 M2 quartz-2.1.7 解决bean不能注入问题

    我们要达到这样的效果 public class CancelUnpaidOrderTask implements Job { @Autowired private AppOrderService or ...

  9. Redis学习记录之Java中的初步使用

    1.关于Redis redis下载地址:<span style="font-family: Arial, Helvetica, sans-serif;">http:// ...

  10. UVa1606 UVaLive3259 FZU1309 HDU1661 POJ2280 ZOJ2390 Amphiphilic Carbon Molecules

    填坑系列 考虑所有经过两个点的直线,一定有最优解. 再考虑确定一个点,按极角顺序枚举所有直线,从而O(1)转移信息. 还有代码实现技巧 #include<cstdio> #include& ...