AutoMapper配置方法

在Mvc开发中,我们经常需要构建一个viewModel出来供页面使用,在PO和VO之间相互传值的时候,如果实体字段比较多的时候,那么传值将变得异常麻烦,也使得代码非常的臃肿。AutoMapper可以帮我们自动的映射两个实体,而且我们还可以自定义一些映射规则,真的是非常的方便。研究了一晚上,找了各种资料,终于把AutoMapper配置出来了,其实配置也没有那么难,只是我尝试映射的时候想映射一个PageList<T>对象,结果尝试了好长时间,才发现,是PageList<T>貌似不能简单的映射,具体怎么映射我没研究出来,如果谁有好的映射PageList的办法,欢迎与我分享啊,感激不尽。

下面是参考网上的资料写的映射配置,这种配置方法只需要在应用程序启动的时候执行一次,非常的方便。

定义一个接口 IStartupTask

 public interface IStartupTask
    {
        void Execute();
    }

  golbal.asax中定义如下一个方法:

private void ExecuteStartupTasks()
        {
            List<IStartupTask> startupTasks = new List<IStartupTask>();
            Assembly asm;
            // get path of executing (bin) folder from the current executing assembly
            string codeBase = HttpRuntime.BinDirectory;
            UriBuilder uri = new UriBuilder(codeBase);
            string path = Uri.UnescapeDataString(uri.Path);
            string bin = Path.GetDirectoryName(path);
            string[] assemblies = Directory.GetFiles(bin, "*.dll");

            foreach (String file in assemblies)
            {
                try
                {
                    if (File.Exists(file))
                    {
                        asm = Assembly.LoadFrom(file);
                        var query = from t in asm.GetTypes()
                                    where t.IsClass && t.GetInterface(typeof(IStartupTask).FullName) != null
                                    select t;

                        // add types to list of startup tasks
                        foreach (Type type in query)
                        {
                            startupTasks.Add((IStartupTask)Activator.CreateInstance(type));
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw  new Exception(ex.Message);
                }
            }
            foreach (IStartupTask task in startupTasks)
            {
                task.Execute();
            }
        }

  然后在Application_Start中执行这个方法:

 protected void Application_Start()
        {
            ExecuteStartupTasks();
        }

  在Model文件夹增加一个映射类文件,实现 IStartupTask接口

 public class ModelMapping:IStartupTask
    {
        public void Execute()
        {
            Create<AdminUserListModel,user>();
        }
        protected virtual void Create<T1, T2>()
        {
            Mapper.CreateMap<T1, T2>();
            Mapper.CreateMap<T2, T1>();
        }
    }

  这种配置方法的大概意思是,在程序启动的时候,利用反射在Bin目录下挨个儿找所有的dll文件,接着在dll中找所有实现了IStartupTask接口的类,然后给初始化,即执行AutoMapper所需要初始化的一些步骤,具体我没细研究。如果你需要映射的类的dll不在网站的bin目录下,你可以通过设置  string codeBase = HttpRuntime.BinDirectory; 来改变初始文件夹。

时间: 2024-12-27 23:42:08

AutoMapper配置方法的相关文章

虚拟机上静态地址配置方法

虚拟机上静态地址配置方法 虚拟机要与其他东西进行连接时,由于IP地址总会变动,故设置为静态地址. 方法如下,留作备用. 1. 确保虚拟机网络连接方式是桥接模式 2.启动Ubuntu虚拟机,修改/etc/network/interfaces 网络接口文件,配置ip.掩码.网关等信息: 1 auto lo 2 iface lo inet loopback 3 4 auto eth4 5 iface eth4 inet static 6 address 192.168.1.233 7 netmask

Nginx自签ssl证书创建及配置方法

场景: Nginx使用自签ssl证书实现https连接. 方法: 第一步:使用OpenSSL创建证书 #建立服务器私钥(过程需要输入密码,请记住这个密码)生成RSA密钥 >openssl genrsa -des3 -out server.key 1024 #生成一个证书请求     >openssl req -new -key server.key -out server.csr #需要依次输入国家,地区,组织,email.最重要的是有一个common name,可以写你的名字或者域名.如果为

NHibernate各种数据库连接参数文件配置方法说明

//NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示:<?xml version="1.0" encoding="utf-8" ?><hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >  <session-factory name="CwfSer

UI第九讲.UITableView表视图创建,表视图的重用机制,表视图的相关配置方法

一.UITableView表视图创建 1>.基本属性: UITableView继承自UIScrollView,所以可以滚动          表视图的每一条数据都是显示在UITableViewCell对象中          表视图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0始 2>.重要用法: 最重要的是两个代理方法 <UITableViewDelegate,UITableViewDataSource>(其中必须实现的是 numberOfRow

NLB多播模式下跨路由访问的配置方法

前些时间因为需大量访问共享文件,为提高访问的并发速度,就配置了两台服务器,采用windows的NBL来配置,配置方法在网上很多,配置完后,采用多播在本地可以访问,但其它网段就无法访问:后来又在网上查资料,有些说最好采用单播模式,这样支持跨网段的访问,又将NBL的工作模式改成单播模式,但出现有些机子能访问,有些不能访问,依据单播的工作原理,得知会修改网卡的物理地址改成以02BF开头的mac地址,在三层交换机上查看mac地址转发表,发现02bf开头的地地址只出现在一个物理端口上,另一台计臬机的端口上

docker网络配置方法总结

docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥,它可以使容器和主机相互通信,容器与容器间通信.问题是,如何让位于不同主机上的docker容器可以通信.如何有效配置docker网络目前来说还是一个较复杂的工作,因而也涌现了很多的开源项目来解决这个问题,如flannel.Kubernetes.weave.

virtualbox下Centos6.5桥接模式上网配置方法

记得之前安装linux配置桥接模式,马上就能上网的,虚拟机上重装了系统后就不能上网了,折腾了好几次,不停地安装系统,原来应该怎么配置,我真是完全忘记了,年纪大了脑子不好使了!这里记录一下,免得下次再忘. 1.安装linux并配置IP,虚拟机配置为桥接模式,如下图,红框里选主机的网卡,这里是我win7电脑的网卡 2.修改网络连接属性,如下图,勾上就OK了 virtualbox下Centos6.5桥接模式上网配置方法,布布扣,bubuko.com

Java学习之道:jdk环境变量配置方法

JDK(Java Development Kit)是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,不管是做JAVA开发还是做安卓开发,都必须在电脑上安装JDK. 64位下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html jdk环境变量配置方法: 在安装完jdk后,还需要对jdk的环境变量进行配置才能正常使用,下面教大家如何配置jdk环境变量: 1

树莓派相关-树莓派串口配置方法

树莓派是否能够使用串口呢,答案是肯定的 ,以下是具体方法 1.树莓派的第一排的第三,四,五个分别,也就是下图的6,8,10三个端口分别是地,TX与RX,与被连接设备连接起来.注意树莓派的TX要连接从设备的RX,树莓派的RX要连接树莓派的TX 2.树莓派上只有一个串口,系统默认将它作为调试口,所以不能直接当成普通串口进行编程和使用,需要先将调试口的配置去掉,再使用.此处需要修改两处文件 2.1  修改/boot/cmdline.txt 在终端输入如下指令 sudo nano /boot/cmdli