热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#编程,开源实体映射框架AutoMapper使用方法

1、资源链接:1、使用总结2、对象映射工具3、简介4、基本用法5、官方手册usingSystem;usingSystem.Collections.Generic;
1、资源链接:

1、使用总结

在这里插入图片描述

2、对象映射工具

在这里插入图片描述

3、简介

在这里插入图片描述

4、基本用法

在这里插入图片描述

5、官方手册

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AutoMapper;
using System.Collections;
using System.Data;
using System.Reflection;namespace NFMES.Core.Type
{public static class AutoMapperExtension{///

/// 实体对象转换/// /// /// /// public static TDestination MapTo<TDestination>(this object o){if (o &#61;&#61; null)throw new ArgumentNullException();Mapper.CreateMap(o.GetType(), typeof(TDestination));return Mapper.Map<TDestination>(o); ;}/// /// 集合转换/// /// /// /// public static List<TDestination> MapTo<TDestination>(this IEnumerable o){if (o &#61;&#61; null)throw new ArgumentNullException();foreach (var item in o){Mapper.CreateMap(item.GetType(), typeof(TDestination));break;}return Mapper.Map<List<TDestination>>(o);}/// /// 将 DataTable 转为实体对象 /// /// /// /// public static List<T> MapTo<T>(this DataTable dt){if (dt &#61;&#61; null || dt.Rows.Count &#61;&#61; 0)return default(List<T>);Mapper.CreateMap<IDataReader, T>();return Mapper.Map<List<T>>(dt.CreateDataReader());}/// /// 将List转换为Datatable/// /// /// /// public static DataTable MapToTable<T>(this IEnumerable list){if (list &#61;&#61; null)return default(DataTable);//创建属性的集合List<PropertyInfo> pList &#61; new List<PropertyInfo>();//获得反射的入口System.Type type &#61; typeof(T);DataTable dt &#61; new DataTable();//把所有的public属性加入到集合 并添加DataTable的列Array.ForEach<PropertyInfo>(type.GetProperties(), p &#61;> { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); });foreach (var item in list){//创建一个DataRow实例DataRow row &#61; dt.NewRow();//给row 赋值pList.ForEach(p &#61;> row[p.Name] &#61; p.GetValue(item, null));//加入到DataTabledt.Rows.Add(row);}return dt;}}
}

这个静态类中有4个扩展方法&#xff0c;分别对Object类型&#xff0c;IEnumberable类型&#xff0c;DataTable类型添加了MapTo方法&#xff0c;可以方便的将对象映射到对象&#xff0c;集合映射到集合&#xff0c;表映射到集合&#xff0c;集合映射到表&#xff08;这个功能AutoMapper不支持&#xff0c;我用反射实现的&#xff09;

单实体转化使用方式&#xff1a;
在这里插入图片描述

集合转化的使用方式&#xff1a;

在这里插入图片描述

原文链接&#xff1a;https://www.cnblogs.com/czly/p/9202851.html


推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • CSS Border 属性:solid 边框的使用详解
    本文详细介绍了如何在CSS中使用solid边框属性,包括其基本语法、应用场景及高级技巧,适合初学者和进阶用户参考。 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
  • 1.绑定htmlcss1.1对象语法:  传给v-bind:class一个对象,以动态地切换class   ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • C# 中创建和执行存储过程的方法
    本文详细介绍了如何使用 C# 创建和调用 SQL Server 存储过程,包括连接数据库、定义命令类型、设置参数等步骤。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文介绍了多维缩放(MDS)技术,这是一种将高维数据映射到低维空间的方法,通过保持原始数据间的关系,以便于可视化和分析。文章详细描述了MDS的原理和实现过程,并提供了Python代码示例。 ... [详细]
  • 最新版 EasyCriteria 3.0 已正式上线,该版本经过全面重构,带来了多项性能优化与功能增强。更多详情请参阅官方文档:http://uaihebert.com/?p=1898 ... [详细]
author-avatar
huineisuan111184
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有