gpt4 book ai didi

c# - 使用ajax显示odata信息的调用查询

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:58 26 4
gpt4 key购买 nike

我有以下问题

    [WebGet]
public IEnumerable<Table> Query1()
{
var Context = new ProjectEntities();
var First = new DateTime(2012, 10, 5, 8, 0, 0, 0);
var Last = new DateTime(2012, 11, 5, 17, 0, 0, 0);
return
Context.Table.Where(
s =>
s.Date > First && s.Date < Last &&
Context.Table2.FirstOrDefault(a => a.ID ==1).Table3.Contains(s.Table3)).ToList().Take(20);

}

表包含 3 个外键'Table3_id''Table5_id''Table6_id' 和您可以看到,我的查询返回了 Table 实体的列表。

我的 Ajax 调用

<script type="text/javascript">
jQuery("#b7").click(function() {
$.ajax({
type: "GET",
dataType: "json",
url: "http://localhost:port/Ctx/Query1",
success: function (data) {
$.each(data, function (item) {
if (item.Table5!= null) {
$("#t7").append("<tr>" + "<td>" + item.Table5.Title + "</td>" + "<td>" + item.Table3.Name + "</td>" + "<td>" + item.Date + "</td>" + "</tr>");
});

}
});
});

我的调用是错误的,因为它没有返回任何内容(或 undefined )。

如何调用该查询?

最佳答案

试试这个:

创建界面

[ServiceContract]
public interface IMyQuery
{
[OperationContract]
[WebGet]
public IQueryable<Table> Query1()
}

然后在您的服务 (.svc) 中

[WebGet]
public IQueryable<Table> Query1()
{
var Context = new ProjectEntities();
var First = new DateTime(2012, 10, 5, 8, 0, 0, 0);
var Last = new DateTime(2012, 11, 5, 17, 0, 0, 0);
return
Context.Table.Where(
s =>
s.Date > First && s.Date < Last &&
Context.Table2.FirstOrDefault(a => a.ID ==1).Table3.Contains(s.Table3)).Take(20).AsQueryable();

}

• 操作必须是作为数据服务类成员的公共(public)实例方法。

• 操作方法只能接受输入参数。数据服务无法访问消息正文中发送的数据。

• 如果定义了参数,则每个参数的类型必须是原始类型。任何非原始类型的数据都必须序列化并传递到字符串参数中。

• 该方法必须返回以下内容之一:

  • IEnumerable

  • 可查询

  • 数据服务公开的数据模型中的实体类型。

  • 原始类,例如整数或字符串。

• 为了支持排序、分页和过滤等查询选项,服务操作方法应返回IQueryable。对于仅返回 IEnumerable 的操作,拒绝包含查询选项的服务操作请求。

• 为了支持使用导航属性访问相关实体,服务操作必须返回 IQueryable。

• 方法必须使用 [WebGet] 或 [WebInvoke] 属性进行注释。

  • [WebGet] 允许使用 GET 请求调用该方法。

  • [WebInvoke(Method = "POST")] 允许使用 POST 请求调用该方法。其他

不支持 WebInvokeAttribute 方法。

在你的 javascript 中

<script type="text/javascript">
jQuery("#b7").click(function() {
$.ajax({
type: "GET",
dataType: "json",
url: "http://localhost/your service.svc/Query1?$format=json",
success: function (data) {
$.each(data.d, function (i) {
if (data.d[i] != null) {
...
}
});
}
});
});
</script>

如果这没有帮助,请尝试遵循以下 quick start guide

关于c# - 使用ajax显示odata信息的调用查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13969061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com