自动映射器集合
Automapper Collection
我正在做一个项目,我需要映射集合。我遇到了 Automapper.Collection 并尝试使用 class 但它都不起作用。我需要帮助。这是我的代码。
在我的创业公司class
services.AddAutoMapper(cfg => { cfg.AddCollectionMappers(); },typeof(Startup));
我还创建了一个 class 继承自 Automapper 配置文件 class here
public class UserMappingProfile : Profile
{
public UserMappingProfile()
{
CreateMap<PhotoToUpdateDto, Photo>().EqualityComparison((src, dest) => src.PublicId.ToLower() == dest.PublicId.ToLower());
CreateMap<SocialHandles, SocialHandleDto>().ReverseMap().EqualityComparison((src, dest) => src.Name.ToLower() == dest.Name.ToLower());
}
}
每当我使用映射器时,它都会在数据库中创建新记录,而不是更新已经存在的记录。我需要帮助。
我认为这是因为您实体中的导航 属性
如果你有导航 属性 在你的 Createmap 中忽略它们
例如
CreateMap<PhotoToUpdateDto, Photo>().EqualityComparison((src, dest) =>
src.PublicId.ToLower() == dest.PublicId.ToLower())
.ForMember(p => p.Photographer , opt => opt.Ignore());
我会这样假设:
- 映射器没有问题(因为它仍然成功地映射了您的对象)。
- 当您获得与数据库交互的新对象时,会创建一条新记录,因为您要确保 ID 映射是正确的。
- 您正在使用 EF Core 或某种 ORM 与数据库交互
如果我错了,请忽略这个答案。
好的,如果我的假设是正确的,那是因为 automapper 始终 return 作为映射过程的结果的新对象,您的 DbContext
绝对不会跟踪它。然后,每当您与之交互以在数据库中进行一些更改时,很可能会发生添加操作。
我认为您需要添加更多关于您实际遇到问题的代码块的信息...在这种情况下...为什么数据库条目保持创建,但不更新。
我正在做一个项目,我需要映射集合。我遇到了 Automapper.Collection 并尝试使用 class 但它都不起作用。我需要帮助。这是我的代码。
在我的创业公司class
services.AddAutoMapper(cfg => { cfg.AddCollectionMappers(); },typeof(Startup));
我还创建了一个 class 继承自 Automapper 配置文件 class here
public class UserMappingProfile : Profile
{
public UserMappingProfile()
{
CreateMap<PhotoToUpdateDto, Photo>().EqualityComparison((src, dest) => src.PublicId.ToLower() == dest.PublicId.ToLower());
CreateMap<SocialHandles, SocialHandleDto>().ReverseMap().EqualityComparison((src, dest) => src.Name.ToLower() == dest.Name.ToLower());
}
}
每当我使用映射器时,它都会在数据库中创建新记录,而不是更新已经存在的记录。我需要帮助。
我认为这是因为您实体中的导航 属性
如果你有导航 属性 在你的 Createmap 中忽略它们
例如
CreateMap<PhotoToUpdateDto, Photo>().EqualityComparison((src, dest) =>
src.PublicId.ToLower() == dest.PublicId.ToLower())
.ForMember(p => p.Photographer , opt => opt.Ignore());
我会这样假设:
- 映射器没有问题(因为它仍然成功地映射了您的对象)。
- 当您获得与数据库交互的新对象时,会创建一条新记录,因为您要确保 ID 映射是正确的。
- 您正在使用 EF Core 或某种 ORM 与数据库交互
如果我错了,请忽略这个答案。
好的,如果我的假设是正确的,那是因为 automapper 始终 return 作为映射过程的结果的新对象,您的 DbContext
绝对不会跟踪它。然后,每当您与之交互以在数据库中进行一些更改时,很可能会发生添加操作。
我认为您需要添加更多关于您实际遇到问题的代码块的信息...在这种情况下...为什么数据库条目保持创建,但不更新。