我有一个旧项目,该项目使用700多个复杂的存储过程来获取和修改数据。是否可以使用Graphql创建API而不更改存储过程?
答案 0 :(得分:3)
根据您使用的语言,可能有一些GraphQL库可以存储过程。如果没有,您可以自己编写。
您还可以在其上编写一个REST薄层和GraphQL层。
编辑:
如果您使用的是ASP.NET Core,请检出this library并按照示例进行操作,除了将硬编码数据替换为通常用于与SQL Server进行通信以获取所需数据的库中的调用。我建议使用Dapper(实际上是written by the folks at Stack Overflow!),因为它可以让您编写像conn.Query("[dbo].myFooProc @bar @baz", new { bar = quux, baz = 22 })
这样的轻量级查询(或使用现有的任何类)。
因此,最终您的代码应类似于
public class FooBarQuery : ObjectGraphType
{
public FooBarQuery()
{
var MyData = conn.Query("[dbo].myFooBarProc @FooId", new { FooId = 2 }).ToList();
Field<FooType>(
resolve: context => MyData;
);
}
}