2

DB 첫 번째 방법 인 EF 4.1에서 DbContext POCO code gen을 사용하고 있습니다.다 대다 삽입 실패 - Entity Framework 4.1 DbContext

내 데이터베이스가있는 다 대다 관계 아래와 같이

직원

계정

을 계정 아이디 EmployeeName를 직원 ID 16,

계정 이름

EmployeeAccount

내가 새로운 직원을 삽입하기 위해 노력하고, 그들에게 사전에 기존 계정을 할당하고 할 때 문제가 발생

을 계정 아이디를 직원 ID, 그래서 나는 기본적입니다 아래와 같이하면됩니다 :

Employee emp = new Employee(); 
emp.EmployeeName = "Test"; 
emp.Accounts.Add(MethodThatLooksUpAccountByName("SomeAccountName")); 

context.Employees.Add(emp); 
context.SaveChanges(); 

SQL이 (잘못) 실행 중이며 새로운 [계정] 레코드를 INSERT하려고 시도하는데 제약 조건 위반시 실패합니다. 물론 [Account] 레코드를 삽입하면 안되며 [Employee]를 삽입 한 후에는 [EmployeeAccount] 레코드 만 새로 삽입해야합니다.

어떤 조언이 필요합니까? 감사.

답변

1

MethodThatLooksUpAccountByName이 메서드는 첨부 된 개체 또는 분리 된 개체를 반환합니까? 어쨌든, 반환하는 객체를 컨텍스트에 첨부하려고 할 수 있습니다.

Employee emp = new Employee(); 
emp.EmployeeName = "Test"; 
var acc = MethodThatLooksUpAccountByName("SomeAccountName"); 
context.Attach(acc); //I don't remember if it's attach or attachobject, but intellisense should help you there. 
emp.Accounts.Add(acc); 

context.Employees.Add(emp); 
context.SaveChanges(); 
+0

예, 메서드에서 컨텍스트를 처리하기 때문에 분리되어 있습니다. Attach() 메서드는 컨텍스트가 아닌 엔티티 컬렉션 자체에 있지만 솔루션은 정상적으로 작동합니다. 고맙다, 내가 어떻게 이것을 놓쳤는 지 모르겠다. – EkoostikMartin

+0

언제든지 정확한 구문을 기억하지 못합니다. –

관련 문제