如何在TableController的查询结果中嵌入链接引用?
我跟随阿德里安·霍尔的30 Days of Zumo: Day 26: Relationship Advice。正如Adrian提到的关于GET表/ TodoItem的一对一关系调用,"再次,你在代码中加入 - 不要指望一个Tag项目在你的TodoItem中神奇地填充为链接引用 - 它不会发生。" Adrian演示了如何使用expand参数显示多对多关系中的链接引用。它是如何以一对一的关系完成的?
Adrian's online book为我的问题提供了部分解决方案,但同样没有说明它是如何完全实现的,"可以使用Tag表上的LINQ查询轻松检索标记信息:"
var tag = tagTable.FirstOrDefault(tag => tag.Id.Equals(task.TagId)).Value;
进一步澄清...... 在Zumo的30天里,有一对一的表关系,包括一个表中的外键,如下所示......
namespace Mobile.Backend.DataObjects
{
public class Tag : EntityData
{
public string TagName { get; set; }
}
public class TodoItem : EntityData
{
public string Text { get; set; }
public bool Complete { get; set; }
#region Relationships
public string TagId { get; set; }
[ForeignKey("TagId")]
public Tag Tag { get; set; }
#endregion
}
}
我更喜欢将外键保留在一个表中,如上面Adrian的例子所示。我的主要目标是将标记嵌入到todoItem查询结果中。
谢谢!
答案 0 :(得分:0)
让我们说你在ObjA和ObjB之间有1:1的关系。您将列出ObjB中ObjA的ID和ObjA中ObjB的ID:
public class ObjA {
public string Id { get; set; }
public string ObjBId { get; set; }
}
public class ObjB {
public string Id { get; set; }
public string ObjAId { get; set; }
}
然后,您可以同步这两个表以供离线使用。你有两个不相交的表,在关系的另一边有相关记录的ID。您可以使用之前建议的代码来获取关系另一侧的记录。