SaveChanges를 사용할 때 many-to-many 관계가 저장되고 INSERT 문이 충돌하지 않도록 속성을 설정해야하는 이유는 무엇입니까? FOREIGN KEY 제약 조건 오류가 발생했습니다.Entity Framework/.Net 4.0 : POCO 및 다 대일 관계 저장
매우 간단합니다. AdType과 AdType은 하나의 AdType에 여러 광고가 있습니다. 광고에 재산이 있습니다 :
public class Ad
{
public Int32 AdTypeId { get; set; }
public virtual AdType AdType { get; set; }
}
이 관계를 설명하려면 다음을 수행하십시오.
내가 할 때 :
someAd.AdType = someAdType;
속성은 잘 설정되어 있지만 AdTypeId가 없습니다. 걱정하지 마라. 나는 이것이 저장하는 것이 좋을 것이라고 생각할 것이기 때문에.
context.SaveChanges();
문제 (외래 키 문제를 일으키는) 대신는 AdTypeId 컬럼에 삽입해야하는지 파악하는 객체 할당 adType을 속성을 사용하여이 AdTypeId 열에서 0 값을 저장하려고하는이 시점에서 .
것 알아요 :이 시점 someAdType에서
- 은/ 가 지속 인 ID가 있습니다.
- AdType 속성이 올바르게 설정되었습니다.
- AdTypeId가 0입니다.
- 데이터베이스에 외래 키 관계가 있습니다.
- AdTypeId는 기본 키입니다.
- 내가이 지연로드를 허용하도록 설정되어 있기 때문에 난 정말 adType을 변경 시도하지 않은 사실
에/지연로드 세트를 연기했다.
이봐, 나는 똑같은 문제에 직면 해 있고 성공하지 못한 채로이 옵션을 저장하려고 노력했다. 필자가 아는 한, AcceptAllChangesAfterSave는 변경 사항을 감지하려고 시도하지 않고 엔티티를 Unchanged 상태로 두어 저장 후에 만 AcceptChanges()를 호출합니다. 틀 렸으면 고쳐줘. –