2009-09-08 2 views
0

업데이트 할 상태 속성이있는 엔티티가 있습니다.엔티티 프레임 워크, EntityKey를 변경하면 엔티티가 "변경되지 않음"이됩니다.

나는 다음을 수행하고자이이 컨텍스트에 전달

const int NEW_STATUS = 2; 
myEntity.StatusReference.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS); 

, 그 상태 나 관계를 변화에도 불구하고, "변경"입니다! 즉, 저장이 지속되지 않습니다.

들어오는 엔티티는 첨부 된 컨텍스트와 다른 컨텍스트에서 가져온 것입니다.

누구나 엔티티 키를 업데이트하고 유지할 수 있습니다!? 사전에

감사합니다,

데이비드

답변

0

당신은 할 수 없습니다. EntityKeys는 기본 키에 매핑되도록 설계되었으며, 좋은 DB 디자인에서는 절대로 바뀌지 않습니다. EntityKey를 PK가 아닌 무언가에 매핑했다면 PK로 변경하십시오. DB 디자인에서 PK가 변경되도록 요구하는 경우 해당 디자인을 다시 고려하십시오.가 (당신이 질문을 변경 한 후 제거되었습니다.)

추가, 다시 읽기 질문에 : 당신이 실제로 를 업데이트하고자하는 엔티티의 EntityKey, 아니면 그냥 상태 속성을 변경 하시겠습니까? 추가 할 때 ...

entity.StatusReference.EntityKey = myEntity.EntityKey = new EntityKey("SetName", "KeyName", NEW_STATUS); 

entity.Status = someStatusInstance; 

... 또는 당신의 엔티티의 상태가 변경되지 않은 경우, 당신은 아마 잘못된 작업의 순서를 가지고 : 후자의 경우, 다음 중 하나를 시도 ~/컨텍스트 저장. 도움을 청할 때 그것을 보여 주어야합니다.

+0

죄송합니다. ive 님이 내 게시물 (오타)을 업데이트했습니다. 그 FK는 PK가 아닙니다! :) –

+0

후자, 나는 "entity.Status = someStatusInstance"를 시도했지만 엔티티가 상태를 검색 한 위치와 다른 컨텍스트에 있기 때문에 작동하지 않습니다! 나는 업데이트하고자하는 FK의 가치를 안다. 따라서 왕복은 필요 없다. –

+0

주문이 잘못되었다는 것을 알지 못한다. 일반적인 문제처럼 보이지만, 적절한 해결책을 찾지 못하는 것 같다. 이 사람은 simular 문제가있다 ... http://stackoverflow.com/questions/1178885/update-entitykey-reference-in-entity-framework –