azure mobile backend - 如何在一对一关系查询中嵌入链接表?

时间:2016-09-24 19:51:12

标签: azure azure-mobile-services

如何在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查询结果中。

谢谢!

1 个答案:

答案 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。您可以使用之前建议的代码来获取关系另一侧的记录。