ASP.NET Web API返回可查询的DTO?
发布时间:2020-09-21 14:05:11 所属栏目: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
- asp.net-mvc – 从ModelMetaData获取另一个属性的值
- 扩展ASP.NET数据缓存以在Web场之间共享
- asp.net-mvc-3 – 剃刀引擎 – 如何根据不同的条件渲染不同
- asp.net – 我应该在.gitingore文件中包含.vs文件夹吗?
- asp.net-mvc – ASP.NET MVC jQueryUI datepicker在使用AJA
- asp.net-mvc – 所有请求获取HTTP错误401.2 – 未经授权的响
- asp.net-mvc – ASP.Net [HiddenInput]数据属性在Razor中用
- asp.net-mvc – 发现MVC项目中是否使用views / partials
- asp.net-mvc – 保存后显示相同的页面
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC控制器的[Authorize]
- asp.net-mvc – 尝试创建类型为’TypeNewsContro
- IIS会话超时与ASP.NET会话超时
- asp.net-core – 在执行DI时指定服务选项的干净方
- asp.net-mvc – 为什么ASP.NET MVC使用会话状态?
- asp.net jQuery Ajax用户登录功能的实现
- asp.net – 我应该在Web应用程序中嵌入CSS / Jav
- asp.net-mvc – 未在ELMAH中记录的错误
- asp.net-mvc-3 – outputcache mvc3只注销了用户
- asp.net – 单个应用程序中的多个母版页
热点阅读