2011-09-29 4 views
1

ObjectContext와 엔티티가 있는데, 이것을 Device라고 부르 자. 엔티티의 엔티티 키가 자동 생성되지 않으며 컨텍스트에 추가하는 동안 지정됩니다. 코드객체 컨텍스트에서 새롭게 생성 된 엔티티를 읽음

Context.Devices.Add(new Device{Id = someVal, /*initialization*/}); 

다음 나는 그 실체

var dev = Context.Devices.SingleOrDefault(d => d.Id == someVal); 

및 널 점점에게 읽으려고하고 새로운 개체로 추가 한 후.

물론 SaveChanges()를 호출 한 후 DB에서 해당 장치를 읽을 수 있습니다.

컨텍스트에서 엔티티를 읽을 수없는 이유는 무엇입니까?

답변

2

SaveChanges를 호출 할 때까지는 실제로 데이터베이스에 존재하지 않기 때문에. Context.Devices.SingleOrDefault(d => d.Id == someVal);에 전화하면 데이터베이스에 다시 전화가 걸립니다.

+0

엔티티가 컨텍스트의 개체 세트에 존재해야하고 컨텍스트에 대한 쿼리가 해당 엔티티를 반환 할 것으로 예상했습니다. 그리고 다른 경우에는 그 행동을 경험하고있었습니다 – Gopher

+0

흠. 디버거를 통해 Context.Devices 컬렉션을 검사하여 방금 추가 한 객체가 거기에 표시되는지 확인합니다. 아마도 SingleOrDefault 대신 Find를 사용하면됩니다. –