问题标签 [autoquery-servicestack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
192 浏览

servicestack - ServiceStack - 自动查询请求日志问题

我正在努力获取在 servicestack 服务中工作的请求日志的示例自定义自动查询。

我正在使用 VS2017 并使用 ServiceStack ASP.NET 空模板来创建新的解决方案。然后,我在http://docs.servicestack.net/autoquery-service#view-request-logs-in-autoquery-viewerhttpsgithubcomservicestackadmin中添加了示例中的一些代码,即以下类 QueryRequestLogs、CustomAutoQueryDataServices 和 TodayLogs。我的apphost是-

我打了几个电话,以确保请求日志中有内容。然后我使用元数据页面中的链接转到自动查询查看器。无论我从左侧尝试哪个搜索选项,我都会得到“对象引用未设置为对象的实例”。System.NullReferenceException 来自该行

完整的堆栈跟踪是:

当我调试时,每个日志、查询和请求参数都不为空。

我假设我在某个地方遗漏了一些简单的东西,但我不知道是什么,也看不到如何进一步调试它。

0 投票
1 回答
201 浏览

servicestack - ServiceStack 自动查询到自定义 DTO

因此,我正在使用 ServiceStack,并且对它有所了解。我使用过 AutoQuery 并发现它在调用直接的“GET”消息时是必不可少的。不过我遇到了一个问题,我已经看了几个小时了。我希望这只是我忽略的东西。

我为我的 AutoQuery 消息设置了一个简单的类:

我有一个 OrmLite 连接,用于从数据库中检索 db_camera 整体。这一切都很好。我不想从数据库中返回模型,但我想返回一个 DTO,我已将其定义为另一个类。因此,使用 QueryDb 的版本,我的请求消息现在是这样的:

Camera 类是我的 DTO。调用仍然执行,但我没有得到任何结果。我在 db_camera 类上设置了一个映射器扩展方法 ToDto() 以返回一个 Camera 实例。

也许我只是习惯了 ServiceStack 让事情变得如此简单......但是我如何获得上面的 AutoQuery 请求来执行我的请求的映射?由于我指定了我想要的转换,数据检索现在对我来说是手动操作吗?那么这种类型的价值在哪里呢?现在我有责任查询数据库,然后在我的数据模型记录上调用 .ToDto() 以返回 DTO 对象吗?

编辑:我刚刚观察到的其他事情......我仍然从 AutoQueryViewer 中返回的数据集中获取行数,但字段名称是数据模型类 db_camera 而不是 Camera。

在此处输入图像描述

0 投票
1 回答
146 浏览

c# - AutoQuery / Ormlite-servicestack:我可以过滤掉 QueryDb 类的软删除吗?

我们有一些使用 Ormlite/Servicestack 构建的服务,我们主要使用QueryData自定义逻辑提取数据库对象和 POCO。

但是,我们有一个表,它确实不需要在逻辑上进行扩展,并且可以很好地使用 AutoQuery 和 URL 参数直接从前端查询数据库。但是,此表包含一个isDeleted用于跟踪软删除的列。前端不应该有任何软删除的项目,我们认为前端不应该能够获取这些记录(即不应该负责使用 a 查询 API ?&isDeleted=false)。

因此,鉴于我们当前的设置:

...是否可以为QueryDb<>自动排除记录在哪里实施过滤器isDeleted=true?这是否只能应用于此表/类?

我正在准备牛奶和饼干,希望mythz 路过并留下礼物……当然,感谢您的帮助!

0 投票
1 回答
65 浏览

servicestack - 使用 AutoQuery 过滤掉软删除

我正在将 ServiceStack 与 OrmLite 一起使用,并且到目前为止取得了巨大的成功。我正在寻找一种在使用 AutoQuery 时过滤掉“软删除”记录的方法。我已经看到了使用 SqlExpression 的建议,但我不确定你会将它放在哪里。在 AppHost 应用程序何时启动?我这样做了,但删除的记录仍然返回。在这种情况下,我的 QueryDb 请求对象如下:

我使用的其他 SqlExpressions 在存储库类本身中,但是由于我使用的是 QueryDb 并且仅使用消息本身(不利用我的存储库类),因此我没有任何其他代码来处理这些消息并过滤掉“删除”的那些。

我也尝试过使用这种方法所建议的自定义服务库,使用以下内容:

这段代码被调用,但是当执行调用发生时,我得到一个错误:

F_isdeleted 列是 SQL Server 中的“位”,在我的 POCO 中表示为布尔值。

关于在这里工作的任何想法?我有点不知所措,这似乎很难做到,但是文档使它看起来很简单。

0 投票
1 回答
94 浏览

servicestack - Servicestack 自动查询自定义约定不适用于 PostgreSQL

我已经定义了新的隐式约定

问题是对于 postgres 连接,查询被错误地翻译成

并且它不会将参数发送到数据库。在内置约定的情况下,它可以正常工作。

更新

我试图定义 EndsWithConvention 但有同样的问题 - 参数没有传递给 pgsql 引擎(但是它在 SqlExpression 中可用)

更新 2 以下定义导致 PostgresException: 42601: błąd składni w lub blisko "$1" (抱歉波兰语错误)

生成的查询是

更新 3

生成

并发出 PostgresException: 42883: operator doesn't exist: date - text

这是 dto 定义

模型:

最终解决方案 @mythz 解决了注册问题和在我的原始查询中使用间隔子句的问题。从现在开始,以下定义可以很好地获取过去 X 天内的记录。谢谢@mythz

0 投票
2 回答
286 浏览

ormlite-servicestack - ServiceStack AutoQuery 加入使用

阅读文档后,我不确定,但我得出的结论是,在创建 QueryDb 时,您不能选择要加入的列?而且我的印象是,您必须要复制到 DTO 对象?您不能复制到常规对象或动态对象?

public class SampleAutoQueryDb : QueryDb<MailResponseDetailOrm, object>, ILeftJoin<MailResponseDetailOrm, MailResponseOrm> { }

任何人都可以提供有关将我的 MailResponseOrm 加入 MailResponseDetailOrm 的任何见解。MailResponseDetailOrm 有 5 个字段,即Email地址。我也希望 MailResponseOrm 也能加入其中Email。我也不想改变任何一个列名。我是否必须创建自定义实现或服务才能做到这一点?

更新

这是我的代码,如下所示:

0 投票
0 回答
32 浏览

servicestack - table.id 列的自动查询 servicestack ILeftJoin 问题

我对自动查询 dto 的定义如下:

不知道为什么在查询执行期间 ContractItemEstimateItemId 的值取自 ContractItemEstimateItemComponent.ContractItemEstimateItemId (该值尚不存在)。

预计查询将从中获取字段ContractItemEstimateItemIdContractItemEstimateItem.Id