Tag: #automapper

尝试将新的EF4实体附加到ObjectContext,同时已附加其实体集合实体时出现问题

这有点难以解释,所以请耐心等待。 我有一个ASP.NET MVC 2项目,正在慢慢杀死我 ,我正在尝试获取表单数据并将其转换为实体来创建或更新,具体取决于具体情况。 最相关的部分(伪代码): Entity Game Scalar properties EntityCollection Platforms 基本工作流程是: 表单数据 – >绑定到DTO的模型 – >使用AutoMapper将DTO映射到EF4实体。 一切正常但有一个例外 – 我需要使用DTO中包含的原始整数索引数据创建或更新Game实体的Platforms EntityCollection。 所以,这是我一直在尝试的,这是行不通的: public AdminController(IArticleRepository articleRepository, IGameRepository gameRepository, INewsRepository newsRepository) { _articleRepository = articleRepository; _gameRepository = gameRepository; _newsRepository = newsRepository; Mapper.CreateMap() .BeforeMap((s, d) => { if (d.Platforms.Count > 0) { Platform[] existing = d.Platforms.ToArray(); foreach […]

如何自动化(映射子成员)

我有类似的东西 public class ProductViewModel { public int SelectedProductId { get; set; } public string ProductName {get; set;} public int Qty {get; set;} public List Products { get; set}; } 我有这样的域名 public class Product { public int ProductId {get; set;} public string ProductName {get; set;} public int Qty {get; set;} } public class Store { public […]

数据实体>域对象> ViewModels,每个都具有截然不同的数据结构

对于数据实体,域对象和ViewModel之间的映射,这是一个通用问题。 我可能不会问它,但希望我能理解它。 以下是一个简化的问题。 假设我有一个entity framework模型,它将1:1映射到我的数据库表,但我的域对象可能不相同,我的ViewModel再次完全不同。 作为一个伪示例: 数据库/ EF实体: MembershipAccount MembershipAccountExtraInfo 域: 帐户 轮廓 喜好 视图模型: UserProfileModel 假设我需要显示一个UserProfileModel,它具有:Username( 来自MembershipAccount ),SignupDate( 来自MembershipAccount ),FullName( 来自MembershipAccountExtraInfo )和TimeZone( 来自MembershipAccountExtraInfo ) 我可能需要什么样的关系,以及什么样的映射机制? 像AccountMapper这样的东西会同时接受MembershipAccount和MembershipAccountExtraInfo并返回一个帐户吗? 当需要几个对象来创建单个域实体时,我有点卡在映射上,反之亦然。 如果它有帮助:我正在设计一个用于管理用户帐户,用户配置文件,用户首选项等的API,但数据库表到处都是。 可能需要从跨越4-5个表和2个数据库的数据创建单个用户配置文件。 我的数据库表和任何(逻辑)域对象之间没有1:1映射。 谢谢!

AutoMapper 3.1.1和Entity Framework 6.1代理对象

我已经意识到这已经被问过了,但到目前为止我所阅读的解决方案似乎没有任何区别。 我正在使用Entity Framework 6.1和AutoMapper 3.1.1。 取以下对象: Company和CompanyListItem ; 我试试这个: Mapper.Configure(); 好吧,当我尝试进行实际的映射时,它会崩溃并烧毁,但没有定义映射。 我知道这是由于Entity Framework创建的代理对象引起的。 到目前为止我看到的一个解决方案是调用Map方法的重载版本: IQueryable companies = CompaniesService.FindCompanies(); Mapper.Map(companies, typeof(Company[]), typeof(CompanyListItem[])); 它仍然无法正常工作并对我大喊大叫。 我还读过其他post,这些post在2.2.1中已经修复了吗? 这是不同的还是它倒退了? 我很感激建议。

自动映射:使用自定义解析程序返回的结构

使用AutoMapper,我使用ValueResolver返回这样的结构 struct MyStruct { public int propA; public int propB; public int propC; } class MyResolver : ValueResolver { protected override MyStruct ResolveCore(MyViewModel source) { ….return MyStruct data } } 我返回了一个结构,因为映射规则非常复杂,我无法为每个属性编写自定义解析器,因为它们彼此相关。 所以我的想法是在一个返回结构并使用它的解析器中执行此操作 AutoMapper.Mapper.CreateMap() .ForMember(dest => dest.SomePropA, src => src.ResolveUsing().propA)) .ForMember(dest => dest.SomePropB, src => src.ResolveUsing().propB)) 不幸的是,这不起作用。 看起来像src.ResolveUsing()没有返回结构 任何帮助都非常感谢。 谢谢。

如何使用显式成员映射配置AutoMapper for Polymorphism?

考虑以下基本情况: Mapper.CreateMap() .Include() .Include(); Mapper.CreateMap() .ForMember( m => m.P0, a => a.MapFrom( x => x.Prop0 ) ) .ForMember( m => m.P1, a => a.MapFrom( x => x.Prop1 ) ); Mapper.CreateMap() .ForMember( m => m.P0, a => a.MapFrom( x => x.Prop0 ) ) .ForMember( m => m.P2, a => a.MapFrom( x => x.Prop2 ) ); Mapper.AssertConfigurationIsValid(); […]

使用AutoMapper将DataTable映射到对象(DTO)

我正在尝试使用AutoMappers DynamicMapfunction将DataTable映射到对象(DTO)。 DataTable dt; dt = new dalAllInvestors().InvestorNameSearch(investorNameSearch); // Look at DynamicMap – Urgent List apiObject = AutoMapper.Mapper.DynamicMap<IDataReader, List>( dt.CreateDataReader()); return apiObject; public class dtoAPISimpleInvestor { public int FirmID { get; set; } public string FirmName { get; set; } public string Type { get; set; } public string Location { get; set; } } […]

AutoMapper.dll中出现“AutoMapper.AutoMapperMappingException”类型的例外,但未在用户代码中处理

不知何故,我的代码不再起作用(它之前使用完全相同的代码工作)。 这就是问题: 代码 我正在尝试使用以下代码将一些对象映射到ViewModels: 组态: Mapper.CreateMap() .ForMember(x => x.Title, opt => opt.MapFrom(src => src.Book.Title)) .ForMember(x => x.Authors, opt => opt.MapFrom(src => src.Book.Authors.Select(x => x.Name).Aggregate((i, j) => i + “, ” + j))) .ForMember(x => x.Identifiers, opt => opt.MapFrom(src => (!string.IsNullOrEmpty(src.Book.Isbn10) ? (“ISBN10: ” + src.Book.Isbn10 + “\r\n”) : string.Empty) + (!string.IsNullOrEmpty(src.Book.Isbn13) ? (“ISBN13: ” + […]

AutoMapper – 为何使用Map over DynamicMap?

假设您使用AutoMapper进行映射的对象不需要自定义映射,那么执行此操作是否有意义: Mapper.CreateMap(); // …. Mapper.Map(SrcObject, DestObj); 如果不需要自定义映射,上述方法是否只需使用DynamicMap就可以获得任何优势而无需任何先前的配置? Mapper.DynamicMap(SrcObject, DestObj); 我确实理解在映射匿名类型时需要 DynamicMap ,但我问的是DyanmicMap是否不适用于不需要自定义映射的静态类型。

如何在一个MVC应用程序中完全结合EntityFramework,Repository,UnitOfWork和Automapper?

首先,我决定创建一个名为IDataAccessLayer接口,并开始将所有内容放入其中: GetUsers() , GetUser(int id) , GetOrderByNumber(int number) , DeleteOrder(int Id)等方法。 起初工作刚刚完美。 但后来我意识到DataLayer:IDataLayer的具体实现DataLayer:IDataLayer正在发展壮大。 我决定把它切成几个部分类文件。 我仍然觉得我做错了什么。 然后我决定为每个逻辑部分创建接口,如IUsers , IOrders , IItems等。没有用,因为我通过注入控制器构造函数的一个依赖属性访问存储库。 所以每次我需要在我的控制器中使用不同类型的dataContext时,我不能只添加另一个属性。 然后经过几个小时阅读有关entity framework的文章后,我终于意识到我必须使用Repository和Unit of work模式。 而且我仍然需要以某种方式将POCO与我的ViewModel对象分开,尽管他们几乎总是分享相似之处。 Automapper有很多帮助。 但是现在,我不确定如何一起使用所有东西。 entity framework,模式,自动映射和dependency injection框架,如Ninject。 我不清楚如何将所有内容混合到一个很棒的架构中。 你能告诉我一些很好的例子。