【问题标题】:Azure Mobile Apps - POST to table with foreign key "Bad Request" 400 errorAzure 移动应用程序 - 使用外键“错误请求”400 错误发布到表
【发布时间】:2016-05-25 18:15:04
【问题描述】:

我希望这是一个简单的问题。我基于示例 ToDo 项目创建了一个 Azure 移动应用项目,并添加了我自己的表/数据对象。我遇到的问题是将记录添加/发布到与另一个具有外键关系的表中。以下是我的Employee表数据对象:

public class Employee : EntityData
{
    public string Name { get; set; }
    public string EmailAddress { get; set; }
    public bool IsActive { get; set; }

    public string EmployeeTypeId { get; set; }
    public virtual EmployeeType EmployeeType { get; set; }
}

...这是我的 EmployeeType 数据对象:

public class EmployeeType : EntityData
{
    public string EmpType { get; set; }
    public bool IsActive { get; set; }
}

我相信,当使用 EF Code First 在数据库中创建表时,Employee 类中的虚拟 EmployeeType 属性是创建与 EmployeeType 表的关系所必需的。 (至少,这是我所理解的,并且有效)我能够使用 InsertAsync 方法将 Xamarin 客户端应用程序中的记录插入到 EmployeeType 表中,但是在尝试插入 Employee 时收到“错误请求”400 错误表。

我已经四处寻找解决方案,但所有内容都指的是 Azure 移动服务,而不是应用程序。如果需要,我可以用我的客户端模型类更新这个问题(我现在在我的 PC 上,无法访问我的 Mac 上的 Xamarin Studio 项目)。作为参考,这些类与数据对象几乎相同 - 只是每个属性都用 JsonProperty 属性修饰,服务中概述的虚拟属性除外。为了完整起见,我确实尝试将该属性添加到客户端对象,但它仍然抛出“错误请求”400 错误。

感谢您为我提供的任何指导。

【问题讨论】:

    标签: entity-framework azure xamarin.ios azure-mobile-services


    【解决方案1】:

    很可能是在尝试映射外键时出现问题。您是否指定了员工类型的所有字段?我建议您执行以下操作:

    1. 使用 Fiddler 或将委托处理程序附加到您的客户端以查看传出请求的外观。使用 JSON 正文更新您的评论。请参阅https://github.com/Azure/azure-mobile-apps/wiki/Help,-my-app-isn't-working!#log-outgoing-requests-in-managed-client-xamarin-windows。

    2. 将调试器附加到您的服务器项目。您可以在本地运行时或在解决方案部署到 Azure 之后执行此操作,但如果您在本地运行,您将获得更好的性能。请参阅https://github.com/Azure/azure-mobile-apps/wiki/Help,-my-app-isn't-working!#remote-debugging-net-server-sdk。

    我怀疑问题在于 EmployeeType 在您的反序列化对象中最终为空,然后实体框架拒绝数据库插入。

    【讨论】:

      【解决方案2】:

      您能否从错误请求中获得更多信息?尝试将其添加到表控制器中

              protected override void Initialize(HttpControllerContext controllerContext)
          {
              controllerContext.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 2020-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-19
        • 1970-01-01
        相关资源
        最近更新 更多