ASP.NET Web API 返回可查询的 DTO?

2023-11-27

我使用 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 个项目),然后过滤输出。

我希望我尽可能好地描述了我的问题,这有点难以解释。我在谷歌上找不到任何关于它的信息。


不要先选择内存中的所有内容。做这样的事情:

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));
    }
}

顺便说一句,以下代码是您想要执行一次的操作,例如在静态构造函数中或在WebApiConfig.cs file.

Mapper.CreateMap<Item, ItemDto>()
    .ForMember(itemDto => itemDto.Category, mce => mce.MapFrom(item => item.Category.Name));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Web API 返回可查询的 DTO? 的相关文章

随机推荐

  • 在php/mysql中导入带有图像的excel文件

    我想制作一个导入脚本 允许用户将他们的 excel 文件 扩展名不重要 上传到我的 php 应用程序 应用程序应该识别一个项目列表 到目前为止一切顺利 这种情况下的困难在于 Excel 文件包含图像 我已阅读有关 phpexcel 库的信息
  • 使用 HTML5 将 1000 条记录插入 sqlite 时如何加快处理速度

    我是 HTML5 应用程序开发新手 在此 我想使用 HTML5 将 1000 条记录插入到 sqlite 数据库中 这个过程非常缓慢 如何在插入记录之前使用 BEGIN COMMIT 这样可以加快插入速度 请任何人指导我 提前致谢 请在ch
  • 反编译 APK 并在您的应用程序中使用其部分代码是否合法

    反编译 apk 并使用其部分代码是否合法 更具体地说 一个 URL 连接器 我还没学过 应用程序的其余部分 布局等 是我制作的 我可以发布此应用程序而不用担心法律问题吗 不管骗子说什么 反编译绝对合法 最多 您可能会因与软件相关的未经授权的
  • MySQL 是否有与 PHP 的 preg_replace 等效的工具?

    我有一个匹配 MySQL 中的字段 我认为我可以使用正则表达式 但 MySQL 似乎没有完成这项工作所需的功能 这是场景 我在 PHP 中有一个名为 url 的变量 假设此变量设置为字符串 article my article page 2
  • 最大化并行请求数 (aiohttp)

    tl dr 如何最大化可以并行发送的 http 请求数量 我正在从多个网址获取数据aiohttp图书馆 我正在测试它的性能 我发现在这个过程中的某个地方存在瓶颈 一次运行更多的网址并没有帮助 我正在使用这段代码 import asyncio
  • KineticJS 中的缩放和平移

    有没有一种方法可以使用 KineticJS 在画布上进行缩放和平移 我找到了这个图书馆Kineticjs视口 但只是想知道是否有其他方法可以实现这一目标 因为这个库似乎使用了很多额外的库 并且不确定哪些库是完成工作所绝对必需的 或者 我什至
  • Java 二进制兼容性问题:sun.font.FontManager 类变成接口

    我正在使用Lobo Java Web 浏览器库 它给了我一个例外 经过一些研究 我确定可能是由于该库是针对旧版本的 Java 进行编译的 代码如下 import java io IOException import org lobobrow
  • 特定时间和日期的 JavaScript 倒计时

    我正在使用 jQuery 插件将倒计时器放入我的网页中 目前控制计时器显示内容的代码是 插件的 JS 可以在这里查看 https github com objectivehtml FlipClock blob master js flipc
  • Flutter:TextEditingController 数组

    设置数组的最佳方法是什么TextEditingController扑扑中 我的意思是我需要获取一个值数组Textfield 1 到 n 值并发送到服务器 谁能帮助如何实现这一目标 I tried for int i 1 i lt 75 i
  • if(CONST==variable) 或 if(variable==CONST) 有什么区别?

    比较运算符的顺序有区别吗 define CONST VALUE 5 int variable if variable CONST VALUE Method 1 OR if CONST VALUE variable Method 2 这仅仅是
  • 抑制标准 ML 中的“val it”输出

    我正在用标准 ML SML NJ 编写一个 脚本 根据我的喜好设置交互式环境 该脚本所做的最后一件事是打印一条消息 表明一切顺利 本质上 最后一行是这样的 print SML is ready n 当我运行脚本时 一切顺利 但 SML 解释
  • 如何使用包含文件(例如 .css)的相对路径

    我有一个header php文件包含一个 css文件链接 当我 包含 时header php到不同文件夹中的另一个 php 文件中 css对此的 hrefheader php对于新的 php 文件来说不正确 我该如何申报href in my
  • 在 ReactJS 中更新数组中的对象的最佳方法是什么?

    如果您有一个数组作为状态的一部分 并且该数组包含对象 那么通过更改其中一个对象来更新状态的简单方法是什么 示例 根据react教程修改 var CommentBox React createClass getInitialState fun
  • var self = this; 是吗?一个糟糕的模式?

    我发现自己需要 var self this 我的 javascript 类 中有很多内容 虽然这种做法很常见 但感觉有点不对劲 我希望在这个问题中找到一种更好的方法来处理这个问题 或者让我相信这没什么问题 这是保持正确绑定的标准方法吗 我是
  • 在java中发送电子邮件时抛出javax.mail.AuthenticationFailedException

    我是java初学者 我想用java发送电子邮件 因为我在Java中使用这段代码 但我的代码抛出了异常 我需要注意为什么 这是异常的堆栈跟踪 javax mail AuthenticationFailedException 534 5 7 1
  • cakephp 一种表单,多个模型,不显示一个模型的验证消息

    我有一个注册表单 我正在用户和身份表中创建一条记录 用户有许多身份 表格看起来像这样 fieldset legend legend fieldset
  • Sql SMO:如何获取数据库物理文件名的路径?

    我正在尝试返回数据库的 mdf ldf 文件的物理文件路径 我尝试使用以下代码 Server srv new Server connection Database database new Database srv dbName strin
  • Chrome 渲染颜色的方式与 Safari 和 Firefox 不同

    由于某种原因 Chrome 将 FF3A00 渲染为 FF0000 我包含了来自的屏幕截图jsfiddle来说明这一点 色度计报告的颜色 以及我看到的颜色 与 CSS 所说的颜色不同 其他颜色也会发生这种情况 例如 FFAF00 根据色度计
  • 使用 Assembly.LoadFrom 和 Assembly.Load 混合加载程序集时的奇怪行为

    使用混合加载程序集时的奇怪行为Assembly LoadFrom and Assembly Load 我在加载程序集时遇到了奇怪的行为Assembly LoadFrom稍后与Assembly Load 我正在使用加载程序集Assembly
  • ASP.NET Web API 返回可查询的 DTO?

    我使用 ASP NET Web API 构建了一个不错的小 API 但我想从我的上下文 实体框架 AsQueryable 返回实体是不正确的 因此我将所有内容映射到 DTO 对象 然而我不太明白 如何保持上下文可查询 但仍然只返回 DTO