回到目录

AutoMapper在之前我曾经介绍过,今天主要是把它作一下扩展,因为它的调用太麻烦了,呵呵,扩展之后,用着还可以,感觉.net3.5之后,有了扩展方法这个东西,在程序开发速度及表现力上都有了明显的提升,呵呵。

当扩展方法开发完之后的效果如下

实体对实体的映射(赋值)

        var user = new User
{
ID = ,
Name = "zzl",
CreateDate = DateTime.Now,
};
       UserModel model = user.MapTo<UserModel>();
      Console.WriteLine(model.ID + model.Name);

集合对集合的映射(赋值)

       var userList = new List<User> { user };
userList.Add(new User
{
ID = ,
Name = "zzllr",
CreateDate = DateTime.Now,
});
var modelList = userList.MapTo<UserModel>();
modelList.ForEach(i =>
{
Console.WriteLine(i.Name);
});

下面是扩展方法的代码,一个是实体的,一个是集合的

   /// <summary>
/// AutoMapper扩展方法
/// </summary>
public static class AutoMapperExtension
{
/// <summary>
/// 集合对集合
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="self"></param>
/// <returns></returns>
public static List<TResult> MapTo<TResult>(this IEnumerable self)
{
if (self == null)
throw new ArgumentNullException();
Mapper.CreateMap(self.GetType(), typeof(TResult));
return (List<TResult>)Mapper.Map(self, self.GetType(), typeof(List<TResult>));
}
/// <summary>
/// 对象对对象
/// </summary>
/// <typeparam name="TResult"></typeparam>
/// <param name="self"></param>
/// <returns></returns>
public static TResult MapTo<TResult>(this object self)
{
if (self == null)
throw new ArgumentNullException();
Mapper.CreateMap(self.GetType(), typeof(TResult));
return (TResult)Mapper.Map(self, self.GetType(), typeof(TResult));
} }

回到目录

EF架构~对AutoMapper实体映射的扩展的更多相关文章

  1. 10.1.翻译系列:EF 6中的实体映射【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/configure-entity-mappings-using-fluent-api.a ...

  2. EF Code First:实体映射,数据迁移,重构(1)

    一.前言 经过EF的<第一篇>,我们已经把数据访问层基本搭建起来了,但并没有涉及实体关系.实体关系对于一个数据库系统来说至关重要,而且EF的各个实体之间的联系,实体之间的协作,联合查询等也 ...

  3. EF Code First:实体映射,数据迁移,重构

    经过EF的<第一篇>,我们已经把数据访问层基本搭建起来了,但并没有涉及实体关系.实体关系对于一个数据库系统来说至关重要,而且EF的各个实体之间的联系,实体之间的协作,联合查询等也都依赖于这 ...

  4. EF Code First:实体映射

    二.实体映射 实体与数据库的映射可以通过DataAnnotation与FluentAPI两种方式来进行映射: (一) DataAnnotation DataAnnotation 特性由.NET 3.5 ...

  5. 实体映射-------AutoMapper

    现在有2个实体(A.B),2个实体中的部分字段是相同的,现在把A实体获取的值赋值给B实体,利用AutoMapper实体映射可以轻松解决 参考 实体中不同名称之间的映射可以这样写 Mapper.Init ...

  6. 释怀我的诺亚尔 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco)

    释怀我的诺亚尔   不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco) 最近,需要搭建一个新项目,在需求分析时确定数据库中需要创建多个存储过程.所以如果还是用原来E ...

  7. 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射

    一.前言 在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能 ...

  8. EF架构~为EF DbContext生成的实体添加注释(T5模板应用)(转载)

    转载地址:http://www.newlifex.com/showtopic-1072.aspx 最近新项目要用Entity Framework 6.x,但是我发现从数据库生成模型时没有生成字段的注释 ...

  9. ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

    本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...

随机推荐

  1. python 跨模块实现按照文件大小,日期实现日志分割,反转

    笔者的一个自动化测试平台项目,采用了python作为后端服务器语言.项目基于快速成型目的,写了一个极其简陋的日志记录功能,支持日志记录到文件和支持根据日志级别在终端打印不同颜色的log.但随着测试平台 ...

  2. vs2010编辑器中找不到System.Web.Extensions.dll

    vs2010编辑器中想添加System.Web.Extensions.dll引用,却发现引用不了: 排除办法: 1.找到自己VS2010中System.Web.Extensions.dll的所在位置, ...

  3. webpack配置

    1.初始化webpack npm install webpack -g   (全局安装) npm init   (初始化packge.json) npm install webpack --save- ...

  4. 小清新cygwin,正在诞生中

    正文保留. 评论记录点滴.最后汇总.

  5. 20151013 C# 第一篇 流程控制语句

    20151013 流程控制语句: 1.选择语句 if … else if...else 选择语句 if(布尔表达式){  语句块:} if(布尔表达式){  语句块1:}else{  语句块2:} i ...

  6. IE9控件安装方法

    打开上传页面,IE提示安装控件,点击安装   刷新网页,点击允许运行加载项,需要允许两次

  7. MFC 关于如何实现浏览文件

    在做界面的时候,如果涉及到文件,就要输入文件的地址 第一种方法是直接输入,嗯...╮( ̄▽ ̄)╭ 第二种方法就是常见的浏览,然后选择文件<( ̄︶ ̄)/ 其代码如下: CString filena ...

  8. tableindex

    在写代码的时候,失焦的第一反应便是ng-blur,没想到在一个标签上其作用了,多加了几个标签没反应,于是发现了tableindex,写的代码列子如下,希望可以帮助你: <img src='{{a ...

  9. RHEL6.5中完成播放音乐的“大业”

    参考文章:http://ylw6006.blog.51cto.com/470441/589964 感谢:ylw6006@51CTO 首先,费了不少劲去找到三个文件(还要对应版本el6.i686或el6 ...

  10. 用户图形界面(GUI)学习笔记(一)——Swing与AWT

    一.Swing与AWT 对象窗口工具箱(Abstact Window Toolkit,AWT),是JAVA1.0刚出现的时候,包含的一个GUI设计类库.它将处理用户界面元素的任务委派给每个目标平台(W ...