2014-03-19 1 views
2

OData 문제 인 경우 WCF, EF 또는 무엇인지 확실하지 않습니다. 나는 이것에 처음이고 그 선은 아직도 흐릿하다.관련된 엔티티 (관련 ID 아님)를 사용하여 OData로 엔티티를 만들 수 있습니까?

저는 C# MVC .NET 응용 프로그램에서 OData 서비스를 사용하여 일부 엔티티를 만들려고했습니다. 관련 엔터티의 ID를 사용하여 작업하는 것이 좋습니다. 예 :

Container c = getContainer(); 
Foo f = new Foo(); 
f.Name = "blah"; 
f.ThingId = 7; 
c.AddToFoos(f); 
c.SaveChanges(); 

그러나 관련 엔터티를 직접 사용하면 작동하지 않습니다. 이것은 로컬 SQL 데이터베이스를 사용할 때 나에게 도움이되었지만 OData 서비스에서는 사용되지 않았습니다. 예 :

Container c = getContainer(); 
Foo f = new Foo(); 
Thing t = c.Things.Where(v => v.id==7).FirstOrDefault(); 
f.Name = "blah"; 
f.Thing = t; 
c.AddToFoos(f); // or Attach(f) 
c.SaveChanges(); 

또한 SetLink을 사용하면 작동하지 않습니다. 모든 실패 사례에서 Id는 요청에서 0으로 설정됩니다. SetLink 경우에는 @odata.bind 매개 변수가 있습니다.

ID가 요청에서 0이므로 클라이언트 측 매핑 문제 인 것 같습니다. 이 동작이 작동하도록 할 수 있습니까?

답변

0

이것은 일괄 처리라는 기능과 관련이 있습니다. 다음과 같이 코드를 사용해보세요.

Container c = getContainer(); 
Foo f = new Foo(); 
f.Name = "blah"; 
c.AddToFoos(f); 

Thing t = c.Things.Where(v => v.id==7).FirstOrDefault(); 
c.AddLink(f, "Thing", t); // Thing is the Navigation property name from f to t. 

c.SaveChanges(SaveChangesOptions.BatchWithSingleChangeset);