DataRow映射实体

 public static T ConvertToModel<T>(DataRow dr) where T : new()
        {
            T t = new T();
            Type modelType = t.GetType();
            foreach (PropertyInfo pi in modelType.GetProperties())
            {
                if (pi == null) continue;
                if (pi.CanWrite == false) continue;

                if (dr.Table.Columns.Contains(pi.Name))
                {
                    //p.SetValue(t, GetDefaultValue(dr[p.Name], p.PropertyType), null);
                    try
                    {
                        if (dr[pi.Name] != DBNull.Value)
                            pi.SetValue(t, dr[pi.Name], null);
                        else
                            pi.SetValue(t, default(object), null);
                    }
                    catch
                    {
                        pi.SetValue(t, GetDefaultValue(dr[pi.Name], pi.PropertyType), null);
                    }
                }

            }
            return t;
        }

        private static object GetDefaultValue(object obj, Type type)
        {
            if (obj == DBNull.Value)
            {
                return default(object);
            }
            else
            {
                return Convert.ChangeType(obj, type);
            }
        }

  纯代码难得打字

时间: 2024-10-10 06:23:30

DataRow映射实体的相关文章

Mybatis映射实体改造和异常问题

现在WEB开发经常使用 Mybatis 作为持久化框架,在开发过程中,会在Java代码中构建实体类与数据库表字段相互映射, 下面提出一个关于映射实体优化的方案:通过链式编程实现给实例对象赋值. 参考代码: public class UserEntity{ private int userId; private String userName; private long lastLogin; public int getUserId() { return userId; } public User

权限模块_整体方案说明_设计实体&amp;映射实体_实现初始化权限数据的功能

权限模块_整体方案说明 要点说明 权限就是控制功能的使用(功能对应着URL). 对功能的控制就是对URL的访问控制. 在我们的程序中,一个功能对应一个或两个URL: 1,例如列表或删除功能,只对应一个URL. 2,例如添加或修改功能,对应两个URL:..add, ..addUI 权限模型 权限方案: 用户 *----* 角色 *----* 权限 与权限相关的功能具体有哪些: 初始化数据:... 分配权限:... 使用权限:... 具体有哪些功能 初始化数据(安装) 权限数据. 超级管理员. 分配

DataRow转实体

调用                       DataRow row = new DataRow(); ConvertToEntity<实体类>(row) private T ConvertToEntity<T>(DataRow row) where T : new() { T t = new T(); PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性 foreach (PropertyIn

ASP.NET Core搭建多层网站架构【6.2-使用AutoMapper映射实体对象】

2020/01/29, ASP.NET Core 3.1, VS2019, AutoMapper.Extensions.Microsoft.DependencyInjection 7.0.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[6.2-使用AutoMapper映射实体对象] 用依赖注入的方法使用AutoMapper映射 文章目录 此分支项目代码 本章节介绍了使用AutoMapper映射实体对象的注册部分,用依赖注入的方法使用AutoMapper映射,具体

MyBatis映射实体类插件 MyBatis Generator

MyBatis Generator大大简化了MyBatis的数据库的代码编写,有了一个配置文件,就可以直接根据表映射成实体类.Dao类和xml映射. 资源地址: MyBatis项目地址:http://mybatis.github.io/ MyBatis中文使用文档:http://mybatis.github.io/mybatis-3/zh/index.html MyBatis Generator使用文档:http://mybatis.github.io/generator/index.html

Entity Framework 无法对没有主键的视图映射实体的解决办法

我们在使用Entity Framework的时候经常会把数据库中的某一个视图映射为EF的实体,但是如果数据库视图中的列没有包含表的主键列,EF会报出警告说视图没有主键,导致映射为实体失败错误如下: 表/视图“{0}”未定义主键,无法推断有效的主键.已排除该表/视图.要使用该实体,您将需要检查架构,添加正确的键并对它取消注释. English translation: The table/view '{0}' does not have a primary key defined and no v

SpringMVC jdbcTemplate中queryForObject以及queryForList返回映射实体使用

使用SpringMVC搭建项目时,我打算直接使用SpringMVC的JDBC,如果引入Mybatis和Hibernate等ORM是感觉太过的麻烦,所以直接使用springframework.jdbc.SpringMVCJDBC提供了两个数据jdbc操作类,分别是:jdbcTemplate和namedParameterJdbcTemplate.他们都提供了非常多的方法,我就不写了(看源码).现在问题来了,我想从数据库中返回映射到实体该如何办呢? 现在我有表user表,需返回UserInfo实体,以

JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-003映射实体时的可选操作(&lt;delimited-identifiers/&gt;、PhysicalNamingStrategy、PhysicalNamingStrategyStandardImpl、、、)

一.自定义映射的表名 1. 1 @Entity 2 @Table(name = "USERS") 3 public class User implements Serializable { 4 // ... 5 } 2.用定界符 1 //@Table(name = "`USER`")的标准 2 @Table(name = "`USER`") 3 4 //JPA的标准 5 @Table(name = "\"USER\"

java.lang.ClassCastException: java.lang.String cannot be cast to com.jy.hfims.domain 映射实体类型错误

今天在做 excel导出的时候,出现了一个问题"java.lang.ClassCastException: java.lang.String cannot be cast to com.domain.xxx": 公司用hibernate,查询时候可以用sql和hql,用什么一般看心情,第一次查询用的是select g.* from persion g ,site s where g.wz=s.dz(当然都是简写); 当get实体导出的 时候出现了" java.lang.Cla