c# 将数据库中值一次赋给MODEL

2024-01-08 03:48

本文主要是介绍c# 将数据库中值一次赋给MODEL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 /// <summary>

        /// DataTable中的每一列赋值给model中的同名属性

        /// DataTable中只有一行数据

        /// </summary>

        /// <typeparam name="T">泛型:model的类型</typeparam>

        /// <param name="objmodel">model的实例</param>

        /// <param name="dtInfo">DataTable表</param>

        public static void TableToModel<T>(T objmodel, DataTable dtInfo)

        {

            //获取model的类型

            Type modelType = typeof(T);

 

            //获取model中的属性

            PropertyInfo[] modelpropertys = modelType.GetProperties();

 

            //遍历DataTable的每一列

            for (Int32 i = 0; i < dtInfo.Columns.Count; i++)

            {

                //遍历model的每一个属性

                foreach (PropertyInfo pi in modelpropertys)

                {

                    String name = pi.Name;  //获取属性名称

                    //若model属性名称与表中的列名相同

                    if (name == dtInfo.Columns[i].ColumnName)

                    {

                        object value = null ;

                        //获取表中该列对应的数据

                        if (dtInfo.Columns[i].DataType == typeof(string))

                        {

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToString(null);

                            else

                            value = dtInfo.Rows[0][i].ToString();

                        }

                        

                        //判断是否为bool类型

                        if (dtInfo.Columns[i].DataType == typeof(bool))

                        {

 

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToBoolean(null);

                            else

                                value = Convert.ToBoolean(dtInfo.Rows[0][i]);

                        }

                        //判断是否为DateTime类型

                        else if (dtInfo.Columns[i].DataType == typeof(DateTime) )

                        {

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToDateTime(null);

                            else

                            value = Convert.ToDateTime(dtInfo.Rows[0][i]);

                        }

                        //判断是否为int类型

                        else if (dtInfo.Columns[i].DataType == typeof(int) )

                        {

                            

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToInt32(null);

                            else

                            value = Convert.ToInt32(dtInfo.Rows[0][i]);

                        }

                        //判断是否为float类型

                        else if (dtInfo.Columns[i].DataType == typeof(Double) )

                        {

                            

                            

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToDouble(null);    

                                //value = float.Parse(null);

                            else

                                value = Convert.ToDouble(dtInfo.Rows[0][i]);

                                //value = float.Parse(dtInfo.Rows[0][i].ToString());

 

                        }

                        //将表中该列下的数据赋值给model中的同名属性

                        modelType.GetProperty(name).SetValue(objmodel, value, null);

                    }

                }

            }

        }

 

 

调用方法TableToModel<Recurrencecs>(Conf.currentPatient.recurrencecs, dtrecurrencecs);

这篇关于c# 将数据库中值一次赋给MODEL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582225

相关文章

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

Pydantic中model_validator的实现

《Pydantic中model_validator的实现》本文主要介绍了Pydantic中model_validator的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录引言基础知识创建 Pydantic 模型使用 model_validator 装饰器高级用法mo

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态