코드 우선을 사용하여 많은 테이블이있는 데이터베이스가 있습니다. 테이블의 3 이상한 점은 EF가 MachineTypeApproval
-Machine
에서 외래 키 생성한다는 것입니다Entity Framework 잘못된 속성 관계 만들기
public class Machine
{
[Key]
public long ID { get; set; }
...
public virtual MachineTypeApprovalHist MachineTypeApproval { get; set; }
}
public class MachineTypeApprovalHist
{
[Key]
public long ID { get; internal set; }
...
}
public class MachineTypeApproval
{
[Key]
public long ID { get; set; }
...
}
있습니다 (하지 MachineTypeApprovalHist
예상대로를!). 오랜 시간 동안 디버깅을 한 후에 데이터베이스 테이블을 직접보고 테이블 간의 관계를 확인했습니다. 내가 가진 오류는
입니다. UPDATE 문은 FOREIGN KEY 제약 조건 "FK_dbo.Machines_dbo.MachineTypeApprovals_MachineTypeApproval_ID"와 충돌합니다. 데이터베이스 "ATPData", 테이블 "dbo.MachineTypeApprovals", 열 'ID'에서 충돌이 발생했습니다. 명세서가 종료되었습니다.
MachineTypeApprovalHist
의 ID가 MachineTypeApprovals
이 아니므로 오류가 발생합니다.
MachineTypeApproval 속성의 이름을 TypeApproval로 바꾸고 새 마이그레이션을 시도했지만 테이블 열과 인덱스의 이름 만 변경했습니다.
데이터를 잃어 버릴 수 있으므로 데이터베이스를 처음부터 다시 만들 수 없으므로이를 해결하려면 어떻게해야합니까?
한 번이 문제가 발생하여이 링크가 도움이되었습니다. https : // msdn. microsoft.com/en-us/data/jj713564.aspx –
다른 탐색 속성이 있습니까? AFAIK, 일대일 관계의 경우 EF는 PK = FK 관계를 사용하므로 추가 외래 키를 생성하지 않습니다. – DevilSuichiro
@ OffirPe'er, 링크에서 기사를 읽었습니다. 어떤 부분이 도움이 되었습니까? – smok