最近做项目需要读取修改前数据库中被修改的数据所有的信息,一开始想要在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. 用PYTHON输入输出字符串

    这段好懂的,可以互动. import sys import re class BadEmployeeFormat(Exception): """Badly formatt ...

  2. 有感,懂市场比懂产品重要,懂产品比懂技术重要——想起凡客诚品和YY语音了

    一个创业公司,最好三样都要有,但应该CEO是懂市场,经理懂产品,程序员最好懂技术厉害一点-这还不算,销售也要厉害一点,不能守株待兔- 美工——有钱最好请个美工,最起码也要请人设计修改一下- 财务——不 ...

  3. css学习笔记一

    1.在css开头用* {margin:0;padding:0;}可以清除所有样式 2.在css中table,th,td {padding:0;}效果等同于cellpadding="0″. 3 ...

  4. 利用merge优化

    create table a1(TP_END_DATE NUMBER,WK_END_DATE NUMBER, MTH_START_DATE NUMBER, MTH_END_DATE NUMBER, T ...

  5. 【EJS】

    // 用=号输出,就会被escapge转义编码 <%= VARIABLE_NAME %> // 用“-”输出原始内容, 不会被escape <%- VARIABLE_NAME %&g ...

  6. 数据结构与算法分析——C语言描述

    P1.1 选择问题,选择出第K大的数,并画出N为不同值的运行时间,K=N/2 毕业两年半,重写排序,感觉良好.代码使用冒泡排序,库函数clock计算大致运行时间. // P1_1.cpp : Defi ...

  7. B和B+树学习笔记

    二叉树 如果数据都在内存中,我们就用平衡二叉查找树即可,这样效率最高. 在前面的文章中我使用过红黑树(大致平衡的二叉查找树),500万节点时,搜索的深度可以达到50,也就是需要50次指针操作才能获取到 ...

  8. jQuery选择器总结 转

    jQuery选择器总结 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3 ...

  9. Huffman树及其应用

    哈夫曼树又称为最优二叉树,哈夫曼树的一个最主要的应用就是哈夫曼编码,本文通过简单的问题举例阐释哈夫曼编码的由来,并用哈夫曼树的方法构造哈夫曼编码,最终解决问题来更好的认识哈夫曼树的应用--哈夫曼编码. ...

  10. 从客户端(MuliteTextBox2="<a href="http://www....")中检测到有潜在危险的 Request.Form 值

    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报出“从客户端 中检测到有潜在危险的Request.Form值”这样的错.   解决方案一: ...