最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

来源:动视网 责编:小OO 时间:2025-10-05 23:45:55
文档

C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值/******************************************说明:利用反射将数据库查询的内容自动绑定*到实体类**时间:1:492009-9-19**程序员:王文壮****************************************//****************数据库脚本****************createdatabaseMySchool*go*useMySchool*go*cre
推荐度:
导读C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值/******************************************说明:利用反射将数据库查询的内容自动绑定*到实体类**时间:1:492009-9-19**程序员:王文壮****************************************//****************数据库脚本****************createdatabaseMySchool*go*useMySchool*go*cre
C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

/*****************************************

* 说明:利用反射将数据库查询的内容自动绑定

* 到实体类

*

* 时间:1:49 2009-9-19

*

* 程序员:王文壮

* ***************************************/

/****************数据库脚本***************

* create database MySchool

* go

* use MySchool

* go

* create table Student

* (

* ID int identity primary key,

* Name varchar(10)

* )

* ****************************************/

using System;

using System.Reflection;

using System.Data.SqlClient;

using System.Data;

using System.Collections.Generic;

namespace ReflectionDemo

{

#region Main

class Program

{

static void Main(string[] args)

{

DataSet ds = new DataSet();

#region 连接数据库构建DataSet

//SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=MySchool;Integrated Security=True");

//SqlDataAdapter objAdapter = new SqlDataAdapter("Select * from student

///

/// 数据表字段属性(实体属性)

///

public string Property { get; set; }

}

#endregion

#region 反射

public class Utility

{

///

/// 将DataRow转换成实体

///

/// 实体

/// 数据表一行数据

public static void ConvertToEntity(object obj, DataRow row)

{

///得到obj的类型

Type type = obj.GetType();

///返回这个类型的所有公共属性

PropertyInfo[] infos = type.GetProperties();

///循环公共属性数组

foreach (PropertyInfo info in infos)

{

///返回自定义属性数组

object[] attributes = info.GetCustomAttributes(typeof(DataContextAttribute), false);

///将自定义属性数组循环

foreach (DataContextAttribute attribute in attributes)

{

///如果DataRow里也包括此列

if (row.Table.Columns.Contains(attribute.Property))

{

///将DataRow指定列的值赋给value

object value = row[attribute.Property];

///如果value为null则返回

if (value == DBNull.Value) continue;

///将值做转换

if (info.PropertyType.Equals(typeof(string)))

{

value = row[attribute.Property].ToString();

}

else if (info.PropertyType.Equals(typeof(int)))

{

value = Convert.ToInt32(row[attribute.Property]);

}

else if (info.PropertyType.Equals(typeof(decimal)))

{

value = Convert.ToDecimal(row[attribute.Property]);

}

else if (info.PropertyType.Equals(typeof(DateTime)))

{

value = Convert.ToDateTime(row[attribute.Property]);

}

else if (info.PropertyType.Equals(typeof(double)))

{

value = Convert.ToDouble(row[attribute.Property]);

}

else if (info.PropertyType.Equals(typeof(bool)))

{

value = Convert.ToBoolean(row[attribute.Property]);

}

///利用反射自动将value赋值给obj的相应公共属性

info.SetValue(obj, value, null);

}

}

}

}

}

#endregion

}

文档

C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值/******************************************说明:利用反射将数据库查询的内容自动绑定*到实体类**时间:1:492009-9-19**程序员:王文壮****************************************//****************数据库脚本****************createdatabaseMySchool*go*useMySchool*go*cre
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top