我在基于.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
答案 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;它运作得很好