如何使用.net Graphql NuGet联机查询现有数据库?(c#)
我的目标:创建一个通过GraphQl查询现有在线数据库的Windows窗体应用程序 我所做的:如何使用.net Graphql NuGet联机查询现有数据库?(c#),c#,.net,graphql,C#,.net,Graphql,我的目标:创建一个通过GraphQl查询现有在线数据库的Windows窗体应用程序 我所做的: 为了模拟graphQl服务器,我一直遵循官方的做法,直到最后。现在我可以从GraphQl游乐场进行查询并得到响应。此服务器在localhost:4000上运行 我在VisualStudio中创建了一个windows窗体应用程序,该应用程序在graphQl中查询包含模拟数据的内部数据库。例如 我的Form.cs类包含以下代码,我在其中执行查询onButtonClick private voi
- 为了模拟graphQl服务器,我一直遵循官方的做法,直到最后。现在我可以从GraphQl游乐场进行查询并得到响应。此服务器在localhost:4000上运行
- 我在VisualStudio中创建了一个windows窗体应用程序,该应用程序在graphQl中查询包含模拟数据的内部数据库。例如
private void button1_Click(object sender, EventArgs e)
{
var schema = Schema.For(@"
type Jedi {
name: String,
side: String,
id: ID
}
type Query {
hello: String,
jedis: [Jedi],
jedi(id: ID): Jedi
}", _ => { _.Types.Include<Query>(); }
);
var json = schema.Execute(_ =>
{
_.Query = "{jedis { name, side } }";
});
System.Diagnostics.Debug.WriteLine(json);
label1.Text = json;
}
private void按钮1\u单击(对象发送者,事件参数e)
{
var schema=schema.For(@)
绝地武士{
名称:String,
边:弦,,
id:id
}
类型查询{
你好:字符串,
绝地武士:[绝地武士],
绝地武士:绝地武士
}“,=>{uu.Types.Include();}”
);
var json=schema.Execute(\ujson=>
{
_.Query=“{jedis{name,side}}”;
});
System.Diagnostics.Debug.WriteLine(json);
label1.Text=json;
}
执行查询后,我的query.cs类将识别它并解析查询
class Query
{
[GraphQLMetadata("jedis")]
public IEnumerable<Jedi> GetJedis()
{
return StarWarsDB.GetJedis();
}
}
类查询
{
[绝地武士]
公共IEnumerable GetJedis()
{
返回StarWarsDB.GetJedis();
}
}
这是我当前的内部数据库
class StarWarsDB
{
public static IEnumerable<Jedi> GetJedis()
{
return new List<Jedi>() {
new Jedi(){ Id = 1, Name ="Luke", Side="Light"},
new Jedi(){ Id = 2, Name ="Yoda", Side="Light"},
new Jedi(){ Id = 3, Name ="Darth Vader", Side="Dark"}
};
}
}
class StarWarsDB
{
公共静态IEnumerable GetJedis()
{
返回新列表(){
新绝地(){Id=1,Name=“Luke”,Side=“Light”},
新绝地(){Id=2,Name=“Yoda”,Side=“Light”},
新绝地(){Id=3,Name=“达斯维德”,Side=“黑暗”}
};
}
}
我想做的下一步:
现在,我在网上找到了很多关于如何查询数据库的例子,但它们都是在VisualStudio内部制作的。我想做的是连接到我的本地主机上运行的个人数据库(我在下面做的那个),并用graphQl查询它。然后将JSON响应打印到某个地方
GraphQL是API的查询语言,也是服务器端运行时,用于使用为数据定义的类型系统执行查询。GraphQL不绑定到任何特定的数据库或存储引擎,而是由您现有的代码和数据支持。-
嗨,扎耶德
也许我误解了您的解释,但您不能使用GraphQL直接查询数据库。在连接和GraphQL逻辑之间需要一个API项目。将GraphQL方案发布到API端点,它将根据端点返回正确的数据结构
我找到了一个示例,其中将逐步解释如何在ASP.NETCore2中实现它
希望这有帮助。祝你好运 你把它弄混了一点。首先,您不需要在客户机上声明模式。 如果我理解正确,您正在使用webforms,并且希望访问后端的api服务,该服务将返回您的数据 因此,在这种情况下,在webforms项目中需要一个graphql“客户机”,通过它可以“连接”到prisma api这样的端点,然后只将查询或突变作为请求发送到api 这是客户端的链接,您可以将其作为nuget安装,然后按照文档进行操作 因此,在解释的最简单的术语中,graphqlClient向=>endpoint(在本例中为您的prisma api)发送一个查询,该查询从您的数据库获取数据=>
客户端(查询)=>Api(选择*数据源)=>DB(SQL)=>Api(返回数据)=>Client(反序列化)=>bind to UI=>查看输出。感谢您的回答,我理解您的观点,链接似乎很有趣。但是现在想想,我已经建立了这样的系统。数据库在Prisma中,我可以使用GraphQl游乐场(localhost:4000)查询他,并使用Node解析查询。关键是我是否可以连接到localhost:4000(例如,从windows窗体onbuttonclick或其他什么),以及如何传递查询字符串以执行。抱歉,如果它看起来有点混乱,也许我只是错过了大局是如何运作的。Prisma不是一个数据库。它基本上是一个API层,位于您的程序和它查询到的数据库之间,但是来自第三方而不是您自己的数据库。我建议您按照上面链接中的指南使用自己的Web API。如果您仍然希望使用Prisma,基本上可以向您的端点执行HTTP请求(与Postman相同),并将scheme作为主体发送。