엔티티 프레임워크:셀프 가입하세류
-
21-12-2019 - |
문제
나는 다음과 같은 클래스:
public class Application
{
public int Id { get; set; }
/* Other properties */
public int LegacyId { get; set; }
public int LegacyParentId { get; set; }
public int? ApplicationSupersessionId { get; set; }
public virtual ICollection<Application> ApplicationSupersessions { get; set; }
public Application()
{
ApplicationSupersessions = new List<Application>();
}
}
가 ApplicationSupersessions
는 선택적 자기에 합류했다.나는 데이터 이미 추가되어 나 Applications
테이블과 노력하고 조정하는 데이터는 현재 다음과 같다:
하지만 내가 필요한 응용 프로그램 5413
고 5414
가 ApplicationSupersessionId
의 5415
그것은 그것이 어떻게 생겼는지 우리는 기존 시스템,따라서 왜 내가 추가되는 2 Legacy
열
그래서 나가려고 다음과 같다:
var applications = CatalogueContext.Applications.ToList();
foreach (var application in applications)
{
var legacyChildren = applications.Where(x =>
x.LegacyParentId == application.LegacyId).ToList();
if(legacyChildren.Any())
{
foreach(var child in legacyChildren)
{
application.ApplicationSupersessions.Add(child);
}
CatalogueContext.Entry(application).State = EntityState.Modified;
}
}
CatalogueContext.SaveChanges();
하지만 나는 다음과 같은 오류가 발생 라인에서 CatalogueContext.Entry(application).State = EntityState.Modified;
:
해결책
관리 문제를 해결합니다.나의 관계를 설정이 잘못된 내 구성이 있습니다.
나이:
HasOptional(x => x.ApplicationSupersessions)
.WithMany()
.HasForeignKey(x => x.ApplicationSupersessionId)
.WillCascadeOnDelete(false);
을 때가 있어야 된다:
HasMany(x => x.ApplicationSupersessions)
.WithOptional()
.HasForeignKey(x => x.ApplicationSupersessionId)
.WillCascadeOnDelete(false);
나는 확실한 차이가 무엇고 있는지 여부의 EF 버그?
제휴하지 않습니다 StackOverflow