Tag: #automapper

每个类库的dependency injection容器

所以,这是我第一次处理DI,如果我误解了整个DI,请纠正我。 这些是我的一些项目: Web应用程序/ Web API项目 – 取决于服务类+注入Automapper(仅适用于当前项目的配置) 服务(类库) – 取决于数据类+注入自动映射(配置仅适用于当前项目) 数据(类库) 我的目的是让每个项目都有自己的DI容器(Unity DI说)。 我不确定每个项目都有自己的DI容器。 我已经阅读了一些文章,表明它无法完成(不确定我是否正确解释它们)但我不确定为什么? 如果无法完成,任何人都可以解释它,我如何实现这一点,我不想在应用层DI中的数据层中注册类。 如果每个项目都有自己的DI,那么在注册IMapper作为实例时它会覆盖其他层的IMapper吗?

Automapper,MapFrom和EF动态代理

我一直在尝试将我的域对象映射到报表视图模型。 在测试我伪造entity framework代码并使用构建器返回完全填充的pocco对象时,一切都运行良好。 现在我实际上正在访问数据库并返回数据,我看到一些奇怪的动态代理类型错误。 以下是我的代码示例: public class ContactMapping : Profile { protected override void Configure() { Mapper.CreateMap() .ForMember(dest => dest.Gender, opt => opt.MapFrom(src => src.Gender.Name)); } } 映射代码如下: var contact = GetContactFor(clientPolicy); Mapper.DynamicMap(contact, rowModel); return rowModel; 除了返回System.Data.Entity.DynamicProxies.Gender_3419AAE86B58120AA2983DA212CFFEC4E42296DA14DE0836B3E25D7C6252EF18的rowModel.Gender字段外,所有联系人字段都正确填充。 我已经看到人们在使用Map而不是DynamicMap时遇到问题的解决方案,但是我没有发现.ForMember映射失败的任何地方。 有什么建议。

Automapper自定义解析器 – 将存储库注入构造函数

我正在尝试为automapper创建一个自定义解析器,它需要访问我的一个数据存储库来检索登录的用户帐户。 这是我到目前为止的代码…… public class FollowingResolver : ValueResolver { readonly IIdentityTasks identityTasks; public FollowingResolver(IIdentityTasks identitTasks) { this.identityTasks = identitTasks; } protected override bool ResolveCore(Audio source) { var user = identityTasks.GetCurrentIdentity(); if (user != null) return user.IsFollowingUser(source.DJAccount); return false; } } 但是我收到此错误: FollowingResolver’ does not have a default constructor 我尝试添加一个默认的contrstructor,但我的存储库永远不会被初始化。 这是我的autoampper初始化代码: public static void Configure(IWindsorContainer container) { […]

AutoMapper TypeConverter将可空类型映射为不可空类型

我正在使用AutoMapper,并且我已经注册了一个TypeConverter来将可以为空的长值映射到长值,如下所示: public class NullableLongToLongConverter : TypeConverter { protected override long ConvertCore(long? source) { return source ?? 0; } } 这样可以正常工作,并自动获取任何可转换为longs的可空长度。 但是,我有一些其他地图想要将可空的长片“转换”为可空的长片。 这些也最终使用这种类型的转换器。 例如,在下面的代码中,两个属性都设置为0,但我希望NullableLong设置为null。 难道我做错了什么? public class Foo { public long? NullableLong{get {return null;}} …… } public class Bar { public long NotNullableLong{get;set;} public long? NullableLong{get;set;} …… } public static class ComplicatedMapRegister { public static void […]

如何使用Autofac注入AutoMapper?

将AutoMapper注入其他图层的正确方法是什么? 我读了这篇博文,但是这段代码导致了以下exception AutoMapper.dll中出现“AutoMapper.AutoMapperMappingException”类型的例外,但未在用户代码中处理 当尝试在服务层中映射时。 List list2 = _mapper.Map<List>(list); 我的AutoFac配置如下: public static class DependencyRegistration { public static void Config() { var builder = new ContainerBuilder(); builder.RegisterControllers(typeof(MvcApplication).Assembly); builder.RegisterType().As(); builder.RegisterType().As().WithParameter(“mappers”, MapperRegistry.Mappers).SingleInstance(); builder.Register((ctx, t) => ctx.Resolve()).As().As(); builder.RegisterType().As(); //… var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } }

“Where”方法不能遵循“选择”方法或不支持

我为什么得到: “Where”方法不能遵循“选择”方法或不支持。 尝试根据支持的方法编写查询,或在调用不支持的方法之前调用’AsEnumerable’或’ToList’方法。 …使用WHERE子句时,比如调用时: XrmServiceContext.CreateQuery().Project().To().Where(p => p.FirstName == “John”).First(); ? 这有效: XrmServiceContext.CreateQuery().Project().To().First(); 这也有效: XrmServiceContext.CreateQuery().Where(p => p.FirstName == “John”).First(); 我正在使用AutoMapper QueryableExtension 。 附加信息: 我不想在Where子句之前调用ToList()。 我知道它会这样运作。 CreateQuery()返回IQueryable 。

如何使用AutoMapper将目标对象与源对象中的子对象映射?

我有这样的源和目标对象: class ProductWithCategories // Source class { public Product Product { get; set; } // Product is an EF entity class public IEnumerable Categories { get; set; } } class ProductViewModel // Dest class { public int Id { get; set; } // Other properties with the same name as Product class public IEnumerable Categories […]

AutoMapper地图中foreach中的额外迭代

出于某种原因,我在AutoMapper地图定义中使用的循环迭代次数超过应有的范围。 地图定义: Mapper.CreateMap() .BeforeMap((s, d) => { foreach (var platId in s.PlatformIDs) { Platform newPlat = _gameRepository.GetPlatform(platId); d.Platforms.Add(newPlat); } }) .ForMember(dest => dest.BoxArtPath, opt => opt.Ignore()) .ForMember(dest => dest.IndexImagePath, opt => opt.Ignore()) .ForMember(dest => dest.Cons, opt => opt.MapFrom(src => String.Join(“|”, src.Cons))) .ForMember(dest => dest.Pros, opt => opt.MapFrom(src => String.Join(“|”, src.Pros))) .ForMember(dest => dest.LastModified, opt => […]

automapper缺少类型映射配置或不支持的映射。

错误 Missing type map configuration or unsupported mapping. Mapping types: Cities_C391BA93C06F35100522AFBFA8F6BF3823972C9E97D5A49783829A4E90A03F00 -> IEnumerable`1 System.Data.Entity.DynamicProxies.Cities_C391BA93C06F35100522AFBFA8F6BF3823972C9E97D5A49783829A4E90A03F00 -> System.Collections.Generic.IEnumerable`1[[OsosPlus2.Core.DataAccess.Cities, OsosPlus2.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] Destination path: CustomerViewModel.Cities.Cities Source value: System.Data.Entity.DynamicProxies.Cities_C391BA93C06F35100522AFBFA8F6BF3823972C9E97D5A49783829A4E90A03F00 行动方法: public ActionResult _EditCustomer(int CustomerId) { Customers customer = entity.Customers.FirstOrDefault(x => x.sno == CustomerId); CustomerViewModel customerViewModel = new CustomerViewModel(); customerViewModel = AutoMapper.Mapper.Map(customer); customerViewModel.Sectors = entity.Sectors; customerViewModel.Cities = entity.Cities; customerViewModel.PowerSuppliers […]

带有前缀的AutoMapper

我正在尝试使用Automapper映射到对象,问题是我想要映射的对象之一在其所有属性前面都有一个前缀’Cust_’而一个没有。 有没有办法进行这种映射。 比如说我有 class A { String FirstName { get; set; } String LastName { get; set; } } class B { String Cust_FirstName { get; set; } String Cust_LastName { get; set; } } 显然这张地图不起作用 AutoMapper.Mapper.CreateMap(); b = AutoMapper.Mapper.Map(a);