entity-framework - Azure 移动应用-使用外键 "Bad Request"400 错误发布到表

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

我希望这是一个简单的问题。我根据示例 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 在数据库中创建表时,为了创建与 EmployeeType 表的关系,Employee 类中的虚拟 EmployeeType 属性是必要的。 (至少,这就是我的理解,并且它有效)我可以使用 InsertAsync 方法将 Xamarin 客户端应用程序中的记录插入到 EmployeeType 表中,但在尝试插入 Employee 时收到“错误请求”400 错误表。

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

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

最佳答案

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

  1. 使用 Fiddler 或将委托(delegate)处理程序附加到您的客户端来查看传出请求的样子。使用 JSON 正文更新您的评论。请参阅https://github.com/Azure/azure-mobile-apps/wiki/Help,-my-app-isn 't-working!#log-outgoing-requests-in-management-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 在反序列化对象中最终为 null,然后 Entity Framework 拒绝数据库插入。

关于entity-framework - Azure 移动应用-使用外键 "Bad Request"400 错误发布到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033659/

相关文章:

c# - 为什么在 asp.net MVC Controller 中需要显式 Dispose() 方法?谁能解释它的复杂性? (特定于 asp.net)

azure - 从 Azure 托管的 .Net Core 3.1 应用程序访问 Kroger API 时出现 403 禁止

c# - 使用 Monotouch 发送多条短信和电子邮件

ios - 如何使用 SDK 版本 4.x 构建 MonoTouch 应用程序(不针对当前 sdk 的早期版本)

C# EF6 Code First TPH - 两个使用注释继承同一实体的实体的导航属性

c# - JsonPatchDocument 到复杂的 Entity Framework 跟踪对象

azure - 使用站点查询字符串将 Teamcity Web 部署到 Web 管理服务

asp.net-mvc - Azure 应用程序服务非 www 到 www 重定向规则以忽略 cdn 域

c# - Xamarin Forms - 换行按钮文本

c# - DbContext 已被释放