2011-11-20 2 views
0

많은 관계가있는 두 개의 테이블 (사용자, 메시지)이 있습니다. 메시지 테이블에 새 메시지를 추가하고 현재 사용자에게 마사지를 할당하려고합니다. 또한 나는 아래와 같은 데이터를 삽입 :엔티티 프레임 워크에서 many to many 관계의 데이터를 삽입하십시오.

Message newMessage = Message.CreateMessage("MessageText", "DateTime"); 
newMessage.Users.Add(new User{..... }); 
context.SaveChange(); 

사용자 테이블 일부 지정된 사용자를 가지고 있으며 나는 새 사용자를 추가하고 싶지만로하지 않는 동안 사용자 테이블에 새로운 사용자를 추가하는 쿼리를 실행이 코드를 내가 언급 한 메시지 테이블에 새 메시지를 추가하고 현재 사용자에게 마사지를 할당합니다.

어떻게해야합니까?

답변

0

기존 기본 키가있는 User 개체를 새로 만드는 것이 문제입니다. SaveChanges()이 호출되면 EF는 이미 추적중인 엔티티의 변경 사항을 감지하고 새 엔티티를 추가합니다. 새 User 개체가 EF에 의해 추적되지 않았기 때문에 개체를 삽입하려고합니다.

생성 된 사용자가 기존 사용자임을 명시 적으로 EF에 알릴 필요가 있습니다. 그렇게하려면 attach해야합니다.

Message newMessage = Message.CreateMessage("MessageText", "DateTime"); 

var user = new User{ Id = "foo" }; 
context.Users.Attach(user); 

newMessage.Users.Add(user);  
context.SaveChange();