猿问

AutoMapper是否支持Linq?

我对具有延迟加载功能的Linq to SQL非常感兴趣。在我的项目中,我使用了AutoMapper将数据库模型映射到域模型(从DB_RoleInfo到DO_RoleInfo)。在我的存储库代码中,如下所示:


    public DO_RoleInfo SelectByKey(Guid Key)

    {

        return SelectAll().Where(x => x.Id == Key).SingleOrDefault();

    }


    public IQueryable<DO_RoleInfo> SelectAll()

    {

        Mapper.CreateMap<DB_RoleInfo, DO_RoleInfo>();

        return from role in _ctx.DB_RoleInfo

               select Mapper.Map<DB_RoleInfo, DO_RoleInfo>(role);

    }

SelectAll方法运行良好,但是当我调用时SelectByKey,出现错误:


方法“ RealMVC.Data.DO_RoleInfo MapDB_RoleInfo,DO_RoleInfo”无法转换为SQL。


是Automapper不完全支持Linq吗?


我尝试使用以下手动映射代码代替Automapper:


public IQueryable<DO_RoleInfo> SelectAll()

{

    return from role in _ctx.DB_RoleInfo 

    select new DO_RoleInfo 

    {

        Id = role.id,

        name = role.name,

        code = role.code

    };

}

这种方法以我想要的方式工作。


猛跑小猪
浏览 719回答 2
2回答
随时随地看视频慕课网APP
我要回答