automapper

Why is Automapper.ProjectTo() throwing a null reference exception?

大兔子大兔子 提交于 2020-08-10 04:02:11
问题 I have a mapping: var config = new MapperConfiguration(cfg => { cfg.CreateMap<Foo, FooDto>() .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.PhoneNumber, opt => opt.MapFrom(src => src.PhoneNumbers.Number)) //etc. }); and I'm trying to use it in a unit test calling into some mocked up EF objects: var ids = new List<string>() { "123"; "456"; "789"; }; var data = new List<Foo>(); foreach(var

ASP.NET Core搭建多层网站架构【8.3-编写角色业务的增删改】

我的梦境 提交于 2020-08-09 06:53:41
2020/01/29, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【8.3-编写角色业务的增删改】 编写最简单的增删改业务,涉及到DI依赖注入的使用、AutoMapper的使用、工作单元与仓储的使用、雪花Id的生成 文章目录 此分支项目代码 本章节介绍了编写最简单的增删改查业务,涉及到DI依赖注入的使用、AutoMapper的使用、工作单元与仓储的使用 类库添加引用 向 MS.Services 类库添加对 MS.Models 项目的引用 BaseService 在 MS.Services 类库中添加 BaseService.cs 类: using AutoMapper; using MS.Common.IDCode; using MS.DbContexts; using MS.UnitOfWork; namespace MS.Services { public interface IBaseService { } public class BaseService : IBaseService { public readonly IUnitOfWork<MSDbContext> _unitOfWork; public readonly IMapper _mapper; public readonly

asp.net core之AutoMapper

瘦欲@ 提交于 2020-08-09 06:41:41
AutoMapper 简介 AutoMapper是一个对象映射器,它可以将一种类型的对象转换为另一种类型的对象。 它提供了映射规则及操作方法,使我们不用过多配置就可以映射两个类, 可以帮我们免于编写无聊的映射代码. 在代码层与层之间隔离模型model上非常有用. AutoMapper 使用 初始化 创建两个简单的类用于测试: public class UserEntity { public int Id { get; set; } public string Name { get; set; } } public class UserDTO { public int Id { get; set; } public string Name { get; set; } } AutoMapper可以使用静态类和实例方法来创建映射. 静态类方式 Mapper.Initialize(cfg => cfg.CreateMap<UserEntity, UserDTO>()); var userDTO = Mapper.Map<UserDTO>(user); 实例方式 var config = new MapperConfiguration(cfg => cfg.CreateMap<UserEntity, UserDTO>()); var mapper = config.CreateMapper(

ABP开发框架前后端开发系列---(3)框架的分层和文件组织

允我心安 提交于 2020-08-07 19:24:03
在前面随笔《 ABP开发框架前后端开发系列---(2)框架的初步介绍 》中,我介绍了ABP应用框架的项目组织情况,以及项目中领域层各个类代码组织,以便基于数据库应用的简化处理。本篇随笔进一步对ABP框架原有基础项目进行一定的改进,减少领域业务层的处理,同时抽离领域对象的AutoMapper标记并使用配置文件代替,剥离应用服务层的DTO和接口定义,以便我们使用更加方便和简化,为后续使用代码生成工具结合相应分层代码的快速生成做一个铺垫。 1)ABP项目的改进结构 ABP官网文档里面,对自定义仓储类是不推荐的(除非找到合适的借口需要做),同时对领域对象的业务管理类,也是持保留态度,认为如果只有一个应用入口的情况(我主要考虑Web API优先),因此领域业务对象也可以不用自定义,因此我们整个ABP应用框架的思路就很清晰了,同时使用标准的仓储类,基本上可以解决绝大多数的数据操作。减少自定义业务管理类的目的是降低复杂度,同时我们把DTO对象和领域对象的映射关系抽离到应有服务层的AutoMapper的Profile文件中定义,这样可以简化DTO不依赖领域对象,因此DTO和应用服务层的接口可以共享给类似Winform、UWP/WPF、控制台程序等使用,避免重复定义,这点类似我们传统的Entity层。这里我强调一点,这样改进ABP框架,并没有改变整个ABP应用框架的分层和调用规则

基于 abp vNext 和 .NET Core 开发博客项目

末鹿安然 提交于 2020-08-05 11:39:17
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理 基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射 基于 abp

基于 abp vNext 和 .NET Core 开发博客项目

北慕城南 提交于 2020-08-04 20:25:16
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理 基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射 基于 abp

Automapper vs Dapper for mapping

佐手、 提交于 2020-08-04 06:15:07
问题 This question is to verify if the current implementation is the right way to go about in terms of best practices and performance. So far in all my previous companies I have been using Auto Mapper to map relational objects to domain model entities and domain model entities to Dtos. The ORM tools have been Entity framework. In my current company they are using Dapper as ORM tool and do not use AutoMapper as they say Dapper does the mapping for you internally. So the way they have structured the

Automapper vs Dapper for mapping

本小妞迷上赌 提交于 2020-08-04 06:13:23
问题 This question is to verify if the current implementation is the right way to go about in terms of best practices and performance. So far in all my previous companies I have been using Auto Mapper to map relational objects to domain model entities and domain model entities to Dtos. The ORM tools have been Entity framework. In my current company they are using Dapper as ORM tool and do not use AutoMapper as they say Dapper does the mapping for you internally. So the way they have structured the

Automapper vs Dapper for mapping

生来就可爱ヽ(ⅴ<●) 提交于 2020-08-04 06:13:11
问题 This question is to verify if the current implementation is the right way to go about in terms of best practices and performance. So far in all my previous companies I have been using Auto Mapper to map relational objects to domain model entities and domain model entities to Dtos. The ORM tools have been Entity framework. In my current company they are using Dapper as ORM tool and do not use AutoMapper as they say Dapper does the mapping for you internally. So the way they have structured the

ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十五节--缓存小结与ABP框架项目中 Redis Cache的实现

笑着哭i 提交于 2020-07-29 05:30:48
返回总目录: ABP+AdminLTE+Bootstrap Table权限管理系统一期 缓存 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点。 减少寄宿服务器的往返调用(round-trips)。 如果缓存在客户端或是代理,将减少对服务器的请求,减少带宽。 减少对数据库服务器的往返调用(round-trips)。 当内容缓存在web服务器,能够减轻对数据库的请求。 减少网络带宽。 避免了重新生成可重用内容的时耗。 提高性能 因为缓存减少了round-trips, network traffic(网络带宽),并避免- 了生成可重用内容的时耗,所以对性能有巨大的提高。 传统的缓存方式 传统的缓存方式如下面这张图 之前我们处理方式处理起来也很简单 页面输出缓存,直接在 ASP.NET中页面缓存的使用OutputCache 在aspx页的顶部加这样一句即可: <%@ OutputCache Duration="60" VaryByParam="none" %> Duration 表示缓存的时间秒,必选,否则报错。 第二种方式 if (this.Cache["Keys"] == null) { this.Cache.Insert("Keys", List, null, DateTime.Now.AddHours(2), TimeSpan.Zero); }