6

Stworzyłem lazurową usługę mobilną, która zasadniczo składa się z 2 elementów i 2 kontrolerów TableController. Obie te jednostki mają relację 1: 1.Tworzenie jednostki z odniesieniem do innej jednostki w usłudze mobilnej w kolorze błękitnym

public class Entity1 : EntityData 
{ 
    public int Value { get; set; } 
    public DateTime Date { get; set; } 
    public string Name { get; set; } 
    public virtual Entity2 Reference { get; set; } 
} 

public class Entity2 : EntityData 
{ 
    public string Name { get; set; } 
} 

Sterowniki są standardowymi kontrolerami generowanymi na rusztowaniach. Kiedy jestem próby wstawienia instancji entity1 z odniesieniem do istniejącej już entity2 pojawia się następujący komunikat:

{"$id":"1","message":"The operation failed due to a conflict: 'Violation of 
PRIMARY KEY constraint 'PK_Service.Entity2'. Cannot insert 
duplicate key in object 'Service.Entity2'. The duplicate key 
value is (32aec44a282e42b7bc51096052335dad).\r\nThe statement has been 
terminated.'."} 

użyłem następujące JSON w organizmie żądanie:

{ 
    "value": 1, 
    "date": "2015-04-27T06:51:47.641Z", 
    "name": "name", 
    "project": { 
    "id": "32aec44a282e42b7bc51096052335dad", 
    } 
} 

Is It można użyć istniejącej już jednostki jako odwołania w .NET Code First/Azure Mobile Service? Nie jestem do końca pewien, czy jest to więcej problemu związanego z usługą mobilną w wersji EF CodeFirst lub Lazur.

Dzięki.

Odpowiedz

0

Domyślnym zachowaniem dla wkładki Entity1 jest próba wstawienia zagnieżdżonej referencji. Jeśli ta wartość została już wstawiona, może wystąpić konflikt taki jak ten.

Jedną z opcji byłoby zmodyfikować kod insert do leczenia zagnieżdżony element jak już włożona, jak w „Podłączanie istniejącego podmiotu do kontekstu” części https://msdn.microsoft.com/en-us/data/jj592676.aspx

więcej, tym blogu może być pomocne : http://blogs.msdn.com/b/azuremobile/archive/2014/06/18/insert-update-related-data-with-1-n-relationship-using-net-backend-azure-mobile-services.aspx

+0

tak, to wiesz, jeśli jest to to samo dla aktualizacji? Pojawia się ten sam problem z aktualizacją/aktualizacją, gdy obiekt zawiera powiązane dane. Mam profil, który ma kolekcję numerów telefonów. Kiedy aktualizuję profil na urządzeniu mobilnym i wprowadzam zmiany na lazurowy, pojawia się ten sam konflikt 409, mówiąc, że nie mogę wstawić numerów telefonów, ponieważ one już istnieją. Dlaczego próbuje wstawić powiązane dane do aktualizacji/poprawki? Co mogę zmienić, aby temu zapobiec? – jmichas

0

Staraliśmy się zrobić to samo, ale nie dbaliśmy o aktualizację samych powiązanych obiektów. Jeśli chcesz zaktualizować podmiot, który zawiera odniesienia do podmiotów powiązanych, można po prostu dołączyć je do kontekstu i nie będzie żadnych błędów PK wykroczenie:

enter image description here

Powiązane problemy