2016-08-26 3 views
1

Это то, что мои модели выглядитВставить запись с помощью отношения OData

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.

Теперь я пытаюсь вставить новый пользователь, указав идентификатор группы, но вместо этого он дает мне ошибку, которая показывает, что вместо того, чтобы пытаться связать его с моей пользовательской модели он пытается создать новый один:

{ 
    "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: '[email protected]', 
    password: '#test', 
    group: { 
     id: 'ad934511a82c4b42ae5427b5228737c6' 
    } 
} 

ответ

2

отношения не поддерживаются напрямую в Azure Mobile Apps, но вы можете применить некоторые обходные пути, чтобы заставить его работать. Вот сообщение в блоге, которое проходит по сценарию: 30 Days of Zumo.v2 (Azure Mobile Apps): Day 26: Relationship Advice.

Конкретная проблема, с которой вы столкнулись, связана с проблемой «Отделанные сущности» платформы Entity Framework. См. Many to Many Relationships not saving. Проблема в том, что Entity Framework не загрузила дочерний элемент в свой контекст, поэтому он считает, что ему нужно вставить дочерний элемент, а также родительский элемент. (Там были давние пожелания в Entity Framework, чтобы решить эту проблему, но функция никогда не была добавлена.)

Я просто разместил подобный ответ здесь: How do I insert entities with a 1:n relationship in Azure App Service