在.Net Mobile服务中查询子表中的数据

时间:2014-04-25 04:36:41

标签: sql .net azure azure-mobile-services

我在基于.net后端的Azure移动服务项目中有两个简单模型,如下所示&我无法查询子表(查询父表,UserItem,工作得很好)

(Id为nvarchar(128)&由DB自动生成为newId)

public class AnswerItem: EntityData 
{
    public string Content { get; set; }
    public UserItem By { get; set; }
    public QuestionItem ForQuestion { get; set; }
    public double Rating { get; set; }
    public string Comment { get; set; }
}

&安培;此UserItem表的子项如下所示

public class QuestionItem: EntityData
{
    public string Content { get; set; }
    public bool IsAnswered { get; set; }
    public int NumberOfAnswers {get; set;}
    public UserItem By { get; set; }
    public string ById { get; set; }
    public string AtLocation { get; set; }
}

正如您所注意到的,QuestionItem与ById字段上的UserItem表有一个FK关系(在UserItem表中引用Id字段)

问题是当我尝试从子表中查询数据时,我收到错误请求错误 以下是我尝试的一些查询

private IMobileServiceTable<QuestionItem> questionTable =        App.MobileService.GetTable<QuestionItem>();

questions = await questionTable.Where(x=>x.IsAnswered==true).ToCollectionAsync(); (Does not Work)

questions = await questionTable.Where(x=>x.ById="UserIdGoesHere").ToCollectionAsync(); (Does Not Work) 

questions = await questionTable.Where(x=>x.Content.StartsWith("q")).ToCollectionAsync(); (This Works) 

questions = await questionTable.ToCollectionAsync(); (This Works as well) 

如果我在Sql Server对象资源管理器中触发TSQL查询,它们都会返回正确的值。 我对自己的方法可能出错了,我的斗智斗勇。

非常感谢任何帮助。

由于 Supreet

1 个答案:

答案 0 :(得分:0)

进一步调查它正在生成的请求就像这样

192.168.2.4:50002/tables/QuestionItem?$filter=(byid eq 'myUniqueGuId') 

分析fiddler输出显示此错误

“URI中指定的查询无效。无法在类型'x2Service.DataObjects.QuestionItem'上找到名为'byid'的属性”

当然,表中没有'byid'名称中的字段我所拥有的字段叫做'ById'它的JsonProperty装饰器改变了它[JsonProperty(PropertyName =“byid”)]在我的客户端类中。

删除了Json Property&amp;它运作得很好