我更新了我的项目以使用Automapper 3.0.0,现在我的TFS构建没有成功.错误如下:
" ... System.PlatformNotSupportedException:System.PlatformNotSupportedException:此平台上的IMapperRegistry不支持此类型. "
有没有人可以帮我解决这个问题.与此同时,我将恢复到以前的版本,因为那个似乎工作正常.
我是第一次使用自动映射.
我正在研究c#应用程序,我想使用自动映射器.
(我只是想知道如何使用它,所以我没有asp.net应用程序既没有MVC应用程序.)
我有三个类库项目.
我想在服务项目中编写转移过程.
所以我想知道如何以及在哪里配置自动映射器?
我在项目中使用Automapper,我需要动态定值目标对象的字段.
在我的配置中,我有类似的东西:
cfg.CreateMap<Message, MessageDto>()
// ...
.ForMember(dest => dest.Timestamp, opt => opt.MapFrom(src => src.SentTime.AddMinutes(someValue)))
//...
;
Run Code Online (Sandbox Code Playgroud)
该someValue
配置中的代码是,我需要在运行时传递给映射器并且不是所述源对象的一个字段的参数.
有没有办法实现这个目标?像这样的东西:
Mapper.Map<MessageDto>(msg, someValue));
Run Code Online (Sandbox Code Playgroud) 我必须上课
class A
{
public int id {get; set;}
}
class B
{
public C c {get; set;}
}
class C
{
public int id {get; set;}
public string Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我的要求是将类A的id映射到类C的id.现在我所做的是:Mapper.CreateMap().ForMember(des => des.C.Id,src => src.MapFrom(x = > x.id));
它工作正常.
现在看来,Auto mapper已经改变了它们的实现.我收到如下警告:
AutoMapper.Mapper.CreateMap()'已过时:'将在5.0版中删除动态创建地图.使用MapperConfiguration实例并根据需要静态存储,或Mapper.Initialize.使用CreateMapper创建映射器实例.
我需要映射具有不同名称和结构的类的一些属性.对此有任何帮助.
我刚刚通过nuGet在一个新项目上安装了AutoMapper,但是当我运行代码时,我收到以下错误:
无法加载文件或程序集'AutoMapper,Version = 2.2.1.0,Culture = neutral,PublicKeyToken = be96cd2c38ef1005'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
为什么要寻找Version = 2.2.1.0,我该怎么办呢?还原到那个版本?
我有一个Item
包含使用AutoMapperProduct
映射到各自ViewModel
对象的列表.
在我的MVC项目中,我有一个Action方法,显示Item
一个选中的Product
.为此我有一个ViewModel
被调用的ItemDetailsViewModel
包含扁平Item
对象,一个列表ProductViewModel
和一个扁平选择Product
.
我遇到的困难是最好的展示这个扁平的选择Product
.
可以把它想象成eBay,你Item
可以选择多种变化,例如颜色.对我来说,有多种变化Products
.当用户选择Product
我想要返回ItemDetails
ie Item
,列表Products
和所选择的Product
.
我想知道最好的方法吗?目前我的方法是将一个映射Item
到一个ItemDetailsViewModel
,选择所需的ProductViewModel
,然后专门将ProductViewModel
后面的每个属性映射到ItemDetailsViewModel
.此外,由于Item
与Product
具有相同命名属性,最后一行映射将产品带回覆盖Item
的ID和密码.
有关如何最好地配置映射的任何建议?
我已经省略了我所拥有的映射,因为它主要是直接的一对一映射,除了将选定的映射映射ProductViewModel
到ItemDetailsViewModel
.
Mapper.CreateMap<Item, ItemViewModel>()
.ReverseMap();
Mapper.CreateMap<ProductViewModel, ItemDetailsViewModel>()
.ForMember(d => d.ProductId, o => o.MapFrom(s => s.Id))
.ForMember(d => d.ProductCode, …
Run Code Online (Sandbox Code Playgroud) 我有一段时间从旧的映射标准转换为automapper.
这是我的课程
// Models
public class BaseModel
{
public Int64 Id { get; set; }
public Guid UniqueId { get; set; }
public DateTime? CreateDate { get; set; }
public DateTime? LastUpdate { get; set; }
}
public class LibraryItemModel : BaseModel
{
public string Name { get; set; }
public string Description { get; set; }
public string URL { get; set; }
public bool IsActive { get; set; }
public List<LibraryCategoryModel> Categories { get; set; }
}
public …
Run Code Online (Sandbox Code Playgroud) 我试图忽略源类型的属性.我已经定义了这样的映射:
var map = AutoMapper.Mapper.CreateMap<Article, IArticle>();
map.ForSourceMember(s => s.DateCreated, opt => opt.Ignore());
map.ForSourceMember(s => s.DateUpdated, opt => opt.Ignore());
Run Code Online (Sandbox Code Playgroud)
当我调用Map功能时,
AutoMapper.Mapper.Map(article, articlePoco);
Run Code Online (Sandbox Code Playgroud)
无论如何,目的地的属性都会更新.我正在使用从NuGet下载的最新稳定版本.
任何想法为什么这不起作用?
我发现了类似的问题,但没有答案.[问题]:AutoMapper的Ignore()不起作用?
我正在使用 Entity Framework 6 和 Automapper 将实体映射到 dtos。
我有这个型号
public class PersonDto
{
public int Id { get; set; }
public string Name { get; set; }
public AddressDto Address { get; set; }
}
public class AddressDto
{
public int Id { get; set; }
public string Street { get; set; }
public string City { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我使用 automapper Queryable Extension从实体映射 dto。
var personDto = dbContext.People.Project().To<PersonDto>();
Run Code Online (Sandbox Code Playgroud)
上述方法的问题在于,它会使 EF 始终加载地址实体。我希望仅当我使用 include(x => x.Address) 明确告诉他们时才加载地址。如果我在自动映射器映射中指定ignore(),则不会加载地址。是否可以告诉自动映射器在运行时忽略地址属性?我正在使用的自动映射器可查询扩展不支持“条件或映射后”等所有功能。有什么解决方法吗?
我有一个源类型,它具有属性和目标类型,具有完全相同的属性.
为AutoMapper配置一个简单的映射后,如:
Mapper.CreateMap<MySourceType, MyDestinationType>();
Run Code Online (Sandbox Code Playgroud)
我想有一个MyDestinationType的构造函数,它有一个MySourceType参数,然后自动初始化创建类型的属性,源代码如下:
public MyDestinationType(MySourceType source)
{
// Now here I am do not know what to write.
}
Run Code Online (Sandbox Code Playgroud)
我找到的唯一解决方法是为其创建一个静态工厂方法
public static MyDestinationType Create(MySourceType source)
{
return Mapper.Map<MyDestinationType>(source);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法不让这种静态的丑陋?