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 相同的关系。
我的 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 相同的关系。