servicestack,models,Interface,servicestack,Models" /> servicestack,models,Interface,servicestack,Models" />

Interface 重用ServiceStack web api接口的最佳方法

Interface 重用ServiceStack web api接口的最佳方法,interface,servicestack,models,Interface,servicestack,Models,我有许多模型定义了我所有的db表;我想知道为所有这些模型创建一个单一CRUD ServiceStack接口而不为每个模型编写相同代码的最佳方法是什么。 我想让它保持干燥,以便于将来的维护 谢谢。Checkout,您只需将其请求DTO声明为: [Route("/movies")] public class FindMovies : QueryBase<Movie> {} [路线(“/movies”)] 公共类FindMovies:QueryBase{} 您希望每个服务都有一个类型化

我有许多模型定义了我所有的db表;我想知道为所有这些模型创建一个单一CRUD ServiceStack接口而不为每个模型编写相同代码的最佳方法是什么。 我想让它保持干燥,以便于将来的维护

谢谢。

Checkout,您只需将其请求DTO声明为:

[Route("/movies")]
public class FindMovies : QueryBase<Movie> {}
[路线(“/movies”)]
公共类FindMovies:QueryBase{}

您希望每个服务都有一个类型化的请求DTO,但除此之外,您还可以使用基类、共享扩展或实用程序方法来执行公共逻辑,就像在普通C#中一样。内置还减少了从请求DTO填充表POCO的样板文件。

谢谢mythz,我正在尝试使用AutoQuery。。。我不明白的是,如果AutoQuery只实现GET请求或整个CRUD(POST、DELETE、UPDATE)。@wizzy它只是用于查询,这是一个高级选项,但您可以使用相同的方法动态生成和注册服务:是的。。。这与我需要完成的事情是一样的,但第一个示例是不可行的(单个服务委托给多个内部服务),因为我会以一个很长的“if…else”列表结束,其中包含相同的代码,只是为了更改模型类型。。。如果可以的话,我想看一个与您提到的“自动查询方法”相同的示例,因为我真的不明白如何添加POST、删除和更新功能。@wizzy没有时间扩展现有的自动查询源代码impl,特别是考虑到这不是我推荐的方法。我的首选是每个服务都有一个。因此,每个服务都会获得一个显式的路由/端点和请求DTO,您可以完全控制它。在服务内部,您可以自由地委托给共享方法/映射/可重用逻辑。试图通过一个impl自动生成它们对我来说限制太大了,而且会促进神奇/复杂/意外行为。