Azure 移动服务:查询中的外键 table 对象为空

Azure Mobile Services : Foreign key table objects are null in Query

我的 Azure 移动服务上有两个 类,我正在使用 .NET 后端并对我的数据库 table 使用代码优先方法。

我遇到问题的两个 table 是 Chip 和 PlayerChip。

我可以插入数据并从中单独查询,没有任何问题,但是当我想查询 PlayerChip 列表并获取属于外键关系的 Chip 对象上的名称 属性 时,芯片对象为空。

确保正确填充外键对象的最佳方法是什么?

这是我的 table 定义...

public class PlayerChip : EntityData
    {
        [ForeignKey("Chip")]
        public string ChipId { get; set; }

        public virtual Chip Chip { get; set; }
    }

public class Chip : EntityData
    {
        public string Name { get; set; }
    }

这更像是一个 Entity framework 问题,而不是与移动服务有关的任何问题。但是,在您的控制器中,在您调用基础 class 获取特定项目后,您可以添加一些代码来加载芯片 属性。

你可以这样做:

dbContext.Entry(playerChip).Reference("Chip").Load();

这假定您可以访问数据库上下文(您需要添加一个字段并在初始化方法中进行设置)。 "playerChip"这里指的是从基class返回的对象。

更好的解决方案可能是让客户请求包含 属性。 GET https://yourservice.azure-mobile.net/tables/PlayerChip?$expand=芯片

然后您可以在客户端应用程序中需要时获取它,而不是在所有情况下。

客户端 SDK 允许您向请求添加参数,因此您可以添加 $expand 作为这些参数之一。

确保您的客户端模型反映与具有 Chip 属性 引用的 Playerchip 相同的关系。