【问题标题】:ASP.NET Automapper using external Configuration ClassASP.NET Automapper 使用外部配置类
【发布时间】:2017-05-18 13:52:57
【问题描述】:

我想通过 Automapper 将 mimeMessage_MailBox 更改为 email_MailBox 实体,配置代码如下。

public static class AutoMapperConfiguration
{

    public static void configure() {
        Mapper.CreateMap<mimeMessage_MailBox, email_MailBox>()
            .ForMember(dest => dest.SenderName, opt => opt.MapFrom(src => src.From.Mailboxes.ToString()))
            .ForMember(dest => dest.EmailSubject, opt => opt.MapFrom(src => src.Subject))
            .ForMember(dest => dest.EmailCC, opt => opt.MapFrom(src => string.Join(",",src.Cc.Mailboxes.ToString())))
            .ForMember(dest => dest.ReceiverEmail, opt => opt.MapFrom(src=>string.Join(",", src.To.Mailboxes.ToString())))
            .ForMember(dest => dest.EmailBody, opt => opt.MapFrom(src=>src.Body.ContentBase.OriginalString));

    }

现在将数据保存到 DbContext 如下所示:

public void Save(mimeMessage_MailBox mail)
    {
        email_MailBox mailbox = new email_MailBox();
         using (EmailEntityModelContext context = new EmailEntityModelContext())
        {
            context.email_MailBox.Add(Mapper.Map<mimeMessage_MailBox, email_MailBox>(mail, mailbox));
            context.SaveChanges();

        }

我必须在 Save() 方法中调用 AutoMapperConfiguration.configure() 吗? 还是有类似 DI 魔法的东西? 请帮忙。

【问题讨论】:

    标签: asp.net entity-framework automapper


    【解决方案1】:
    Mapper.CreateMap()
    Mapper.Map()
    

    这些方法使用静态(全局)Automapper 实例。因此,每个应用程序生命周期调用一次 CreateMap 就足够了。

    仅供参考:您可以创建额外的映射器实例并控制它们的生命周期。阅读文档:Static and Instance API

    【讨论】:

    猜你喜欢
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    相关资源
    最近更新 更多