这就是我的模型的样子
public User
{
public string Id { get; set; }
public string Username { get; set; }
public virtual Group Group { get; set; }
}
public Group
{
public string Id { get; set; }
public string Name{ get; set; }
public virtual ICollection<User> Users { get; set; }
}
我使用Azure Mobile TableController
,它使用OData进行CRUD。
现在我尝试通过指定组的ID来插入新用户,但是它给了我一个错误,该错误显示不是尝试将其与我的用户模型关联,而是尝试创建新用户:
{
"message": "The operation failed due to a conflict: 'Violation of PRIMARY KEY constraint 'PK_dbo.Groups'. Cannot insert duplicate key in object 'dbo.Groups'. The duplicate key value is (ad934511a82c4b42ae5427b5228737c6).\r\nThe statement has been terminated.'."
}
这就是我的帖子:
POST http://localhost/tables/user?ZUMO-API-VERSION=2.0.0 HTTP/1.1
{
email: 'test@test.com',
password: '#test',
group: {
id: 'ad934511a82c4b42ae5427b5228737c6'
}
}
答案 0 :(得分:2)
Azure移动应用程序不直接支持关系,但您可以应用一些变通方法来使其工作。这是一篇博客文章,介绍了该方案:30 Days of Zumo.v2 (Azure Mobile Apps): Day 26: Relationship Advice。
您遇到的具体问题是实体框架&#34;已分离的实体&#34;问题。参见例如Many to Many Relationships not saving。问题是实体框架没有将子项加载到其上下文中,因此它认为它需要插入子项以及父项。 (实体框架中已经存在长期的功能请求来解决此问题,但该功能从未添加过。)
我刚刚在这里发布了一个类似的答案:How do I insert entities with a 1:n relationship in Azure App Service