0

이것은 간단해야합니다.Entity Framework 데이터베이스 업데이트 : 외래 키 참조 잘못된 열 (탐색 속성)

public class Client 
{ 
    public int ClientID { get; set; } 
    public string ClientName { get; set; } 
    public virtual ICollection<Project> Projects { get; set; } 
} 

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string ProjectName { get; set; } 
} 

모든 것을 잘 작동 :

나는 클라이언트와 프로젝트가 있습니다. 내 Projects 테이블에는 Client_ClientID 필드가 있습니다.

Foreign key 'FK_dbo.Projects_dbo.Clients_Client_ClientID' references invalid column 'Client_ClientID' in referencing table 'Projects' 

용장 SQL과 같이 표시됩니다 : 나는 업데이트-데이터베이스를 실행하면

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string ProjectName { get; set; } 

    // navigation properties 
    public virtual Client Client { get; set; } 
} 

, 나는 오류를 얻을 :

는 이제 클라이언트로, 프로젝트의 탐색 속성을 추가 할 :

EXECUTE sp_rename @objname = N'dbo.Projects.Client_ClientID', @newname = N'Client_ClientID1', @objtype = N'COLUMN' 
ALTER TABLE [dbo].[Projects] ADD CONSTRAINT [FK_dbo.Projects_dbo.Clients_Client_ClientID] FOREIGN KEY ([Client_ClientID]) REFERENCES [dbo].[Clients] ([ClientID]) 

단점을 추가하기 전에 왜 Client_ClientID의 이름을 Client_ClientID1로 바꾸려고하는지 잘 모르겠습니다. 그것에 traint - 이상한 것?

무엇이 잘못 되었나요?

답변

0

Project 클래스에 ForeignKeyAttribute을 추가하십시오.

public class Project 
{ 
    public int ProjectID { get; set; } 
    public string ProjectName { get; set; } 

    [ForeignKey("Client")] 
    public int ClientID { get; set; } 
    public virtual Client Client { get; set; } 
} 
+0

감사합니다. 왜냐하면 나는 그걸로 시작하지 않았기 때문에, "Client_ClientID"라는 이름을 FK 필드로 사용했습니다. 테이블을 삭제하고 __MigrationHistory를 삭제 한 다음 Update-Database -Force를 실행하여 위와 같이 스키마를 다시 만들어야했습니다. 이제는 작동하는 것 같아요, 자동으로 연쇄 적으로 삭제됩니다 (수동 응용 프로그램을 제거 할 수 있음). 완전한! – Sean