1

외래 키 제약 조건을 만들 수 없습니다 : 패키지에서엔티티 프레임 워크 마이그레이션은 내가 2 개 테이블을했다

public class WorkCheck 
{ 
    [Key, Column(Order = 0)] 
    [ForeignKey("Work")] 
    public int WorkId { get; set; } 
    public virtual Work Work { get; set; } 

    [Key, Column(Order = 1)] 
    [ForeignKey("Check")] 
    public int CheckId { get; set; } 
    public virtual Check Check { get; set; } 

    (...) 
} 

    public class Work 
    { 
     public int WorkId { get; set; } 
     (...) 
     public virtual IList<WorkCheck> WorkChecks { get; set; } 
    } 

    public class Check 
    { 
     public int CheckId { get; set; } 
     (...) 
     public virtual IList<WorkCheck> WorkChecks { get; set; } 
    } 

:

public class Work 
{ 
    public int WorkId { get; set; } 
    (...) 
} 

public class Check 
{ 
    public int CheckId { get; set; } 
    (...) 
} 

은 그 때 나는 그렇게 그들 사이의 페이로드가 많은 관계로 많은 추가하고 싶었 관리자 콘솔 "Add-Migration WorkCheckTableAdded"명령을 실행했지만 오류가 표시되지 않았습니다.

내가 명령 "-verbose 업데이트 - 데이터베이스"를 실행하지만 직후, 나는 예외를 가지고 : "외래 키 'FK_dbo.WorkCheck_dbo.Work_WorkId'참조 잘못된 열이 참조 된 테이블 'DBO에'WorkId '. 제약 조건을 만들 수 없습니다. 이전 오류를 참조하십시오. "

+0

'Work' 테이블에 해당 이름 아래에'WorkId' 컬럼이 이미 존재하며 이전을 실행하기 전에 기본 키입니까? 또는 열 이름이 다른가 ('HasColumnName'으로 다시 매핑)? 그리고 데이터베이스 SQL Server입니까? – Slauma

+0

WorkId 열이 이미 있고 기본 열입니다. 내일 새 빈 프로젝트를 만들고이 문제를 다시 테스트 할 것입니다. –

+0

처음부터 프로젝트를 시작하면 문제가 발생하지 않습니다. 내 초기 마이그레이션에 작업 체크 테이블이없는 현재 스키마가 포함되도록 이전 프로젝트의 마이그레이션을 어떻게 재설정 할 수 있습니까? –

답변

1

새 프로젝트에서는이 문제가 발생하지 않습니다. 그것은 내 프로젝트에서 실패한 마이그레이션 스크립트와 관련이있을 수 있습니다. 마이그레이션을 재설정하기 위해 VS 프로젝트 및 대상 데이터베이스에서 마이그레이션 폴더를 삭제했습니다.