14

외래 키를 노출하지 않고 일대 다 관계를 삭제할 때 EF는 상위 레코드를 삭제하고 하위 레코드에서 외래 키를 null로 시도합니다. 물론 외래 키가 Null을 허용하지 않기 때문에 오류가 발생합니다. 자식 클래스에 외래 키를 추가하면이 동작이 재정의되지만 키를 노출하지 않을 것입니다.외래 키 노출없이 EF 코드 우선에서 계단식 삭제 사용 가능

예를 들어 다음 두 클래스가 주어지면 JobId를 Project 클래스의 속성으로 사용하지 않는 것이 좋습니다.

public class Job : ModelBase 
{ 
    [Required] 
    [StringLength(100)] 
    public string Company { get; set; } 

    [Required] 
    [StringLength(100)] 
    public string JobTitle { get; set; } 

    public ICollection<Project> Projects { get; set; } 
} 

public class Project : ModelBase 
{ 
    [Required] 
    [StringLength(100)] 
    public string Name { get; set; } 

    [Required] 
    public string Summary { get; set; } 

    public int JobId { get; set; } 
} 

연계를 가능하게하는 방법이 있나요이 관계의 여러 측면에 외부 키를 노출하지 않고 EF 코드 처음에 삭제?

답변

14

Yup! 작업 ID를 제거하고 다음을 추가

protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Job>().HasMany(j => j.Projects).WithRequired(); 
    } 

를 데이터베이스에서이 계단식가 PK/FK 관계에서 삭제를 추가합니다.

(귀하의 ModelBase에 정수 Id가 있다고 가정합니다.)

+0

Perfect. 감사! –

+0

내가 분명히 부르는 것이 아니라 ... –

관련 문제