ASP.NET Web API返回可查询的DTO?
发布时间:2020-09-21 14:20:03  所属栏目:asp.Net  来源:互联网 
            导读:我使用ASP.NET Web API构建了一个不错的API,但是我猜想从我的上下文(实体框架)AsQueryable返回实体是不对的,所以我将所有内容映射到DTO对象. 我还不太明白,我如何保持我的上下文可以查询,但仍然只返回DTO而不是实体?还是这不可能? 这是我的代码: public IQ
                
                
                
            | 
                         我使用ASP.NET Web API构建了一个不错的API,但是我猜想从我的上下文(实体框架)AsQueryable返回实体是不对的,所以我将所有内容映射到DTO对象. 我还不太明白,我如何保持我的上下文可以查询,但仍然只返回DTO而不是实体?还是这不可能? 这是我的代码: public IQueryable<ItemDto> Get()
{
    using (EfContext context = new EfContext())
    {
        Mapper.CreateMap<Item,ItemDto>()
            .ForMember(itemDto => itemDto.Category,mce => mce.MapFrom(item => item.Category.Name));
        IEnumerable<ItemDto> data = Mapper.Map<IEnumerable<Item>,IEnumerable<ItemDto>>(context.Items
            .OrderByDescending(x => x.PubDate)
            .Take(20));
        return data.AsQueryable();
    }
} 
 正如你可以看到我加载数据,并使这个小的IEnumerable集合可查询.问题是,为这段代码生成的查询可能是非常低效的,因为它首先加载所有项目(或至少20个第一个项目),然后过滤输出. 我希望我描述我的问题尽可能好,这有点难以解释.我在Google上找不到任何内容. 解决方法不要先选择内存中的所有内容.做这样的事情:public IQueryable<ItemDto> Get()
{
    using (EfContext context = new EfContext())
    {
        var query = from item in context.Items
                    select Mapper.Map<Item,ItemDto>(item)
        return query.OrderByDescending(x => x.PubDate).Take(20));
    }
} 
 BTW以下代码是您想要执行的操作,例如在静态构造函数或WebApiConfig.cs文件中. Mapper.CreateMap<Item,ItemDto>()
    .ForMember(itemDto => itemDto.Category,mce => mce.MapFrom(item => item.Category.Name));                        (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
相关内容
- asp.net-mvc – MVC Razor获取月份名称
 - asp.net – 是否可以根据用户角色隐藏/显示Kendo网格列?
 - asp.net-mvc – 为什么DropDownListFor会在提交后丢失多个选
 - asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代码
 - ASP.NET异步方法问题
 - VS 2015.为ASP.NET 5 web项目设置正确的目标框架
 - asp.net-mvc – MVC DB首先修复显示名称
 - asp.net-mvc – Asp.Net MVC CSLA DDD可能
 - ASP.NET中下载文件的几种实例代码
 - asp.net-mvc – 当注入服务或控制器的依赖关系太多时,重构策
 
推荐文章
            站长推荐
            - asp.net+ajaxfileupload.js 实现文件异步上传代码
 - asp.net-mvc – 在ASP.NET MVC中获取当前操作/控
 - asp.net 文件下载功能函数代码整理
 - entity-framework-4 – 当超出范围时,Ninject不调
 - asp.net-mvc – DotNetOpenAuth在ASP.NET MVC中的
 - asp.net-mvc – ASP.NET MVC:部分知道它是否是从
 - ASP.NET web.config中数据库连接字符串connectio
 - ASP.NET MVC3中的HTML反而不是JSON的IIS响应
 - asp.net-mvc – SelectListItem中的Selected属性
 - ASP.NET:web.config在哪里/如何缓存?
 
热点阅读
            