zoukankan      html  css  js  c++  java
  • C#自动装载数据到实体

    这个类可能并没有像你所想的那么灵活,不过能用,欢迎大家提出修改意见

    使用说明:

    项目中的实体类必须和数据库的表结构一样,否则无法正常使用

    在编译环境VS2008 操作系统WIN2003,XP下通过

    调用类的源代码如下:

    //---------------------------------------------------------------------
    // <copyright file="FormartPropty.cs" company="RichCn INC">
    //   Information Contained Herein is Proprietary and Confidential.
    //   Author: 谭辉 (neumik@163.com)
    // </copyright>
    // <summary>
    // 数据动态实体化处理类
    // 开发环境:VS2008
    // 注意事项:定义的实体类的属性名称 必须与数据库字段名一致 否则无法正常使用,可用LINQ TO SQL 或者动软生成器动态生成实体类
    // </summary>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    namespace Common
    {
    public class FormartPropty<T>
    {
    public T obj;
    public FormartPropty(T obj, DataRow row)
    {
    Type type = typeof(T);
    var props = type.GetProperties();
    foreach (var item in props)
    {
    ///如果DataRow里也包括此列
    if (row.Table.Columns.Contains(item.Name))
    {
    ///将DataRow指定列的值赋给value
    object value = row[item.Name];
    ///如果value为null则返回
    if (value == DBNull.Value) continue;
    ///将值做转换
    if (item.PropertyType.Equals(typeof(string)))
    {
    value = row[item.Name].ToString();
    }
    else if (item.PropertyType.Equals(typeof(int)))
    {
    value = Convert.ToInt32(row[item.Name]);
    }
    else if (item.PropertyType.Equals(typeof(decimal)))
    {
    value = Convert.ToDecimal(row[item.Name]);
    }
    else if (item.PropertyType.Equals(typeof(DateTime)))
    {
    value = Convert.ToDateTime(row[item.Name]);
    }
    else if (item.PropertyType.Equals(typeof(double)))
    {
    value = Convert.ToDouble(row[item.Name]);
    }
    else if (item.PropertyType.Equals(typeof(bool)))
    {
    value = Convert.ToBoolean(row[item.Name]);
    }
    ///利用反射自动将value赋值给obj的相应公共属性
    item.SetValue(obj, value, null);
    }
    }
    this.obj = obj;
    }
    }
    }
    

    调用方法:

    假设有个USER类,传入的参数为DATAROw

    FormartPropty<User> fp = new FormartPropty<User>(new User(), vResult.Tables[0].Rows[0]);
    return fp.obj; //fp.obj就是装载完成后的实体
  • 相关阅读:
    Windows Server2008 R2下安装Oracle 10g
    用R和BioConductor进行基因芯片数据分析(五):芯片间归一化
    用R和BioConductor进行基因芯片数据分析(四):芯片内归一化
    用R和BioConductor进行基因芯片数据分析(三):计算median
    R语言安装R package的2种方法
    用R和BioConductor进行基因芯片数据分析(二):缺失值填充
    Redhat EL4 install gcc 4.2
    Codeforces Round #166 (Div. 1) && (Div. 2)
    美国历任总统
    【JAXWS入门系列】第04章_SOAP异常处理和Handler处理
  • 原文地址:https://www.cnblogs.com/neumik/p/2128921.html
Copyright © 2011-2022 走看看