Ive는 Entity Framework를 사용하여 SQL 2008 데이터베이스와 상호 작용하는 Model View ViewModel 패턴에 따라 WPF 응용 프로그램을 얻었습니다.Entity Framework에서 관계/외래 키 변경 - 유지되지 않음
문제 :
내 문제는 내가 EF를 사용하여, 데이타베이스에 외래 키 값을 변경할 수 없습니다입니다. 사이트와 키의 두 엔티티가 있습니다. 사이트는 많은 키를 가질 수 있습니다. 한 사이트에서 다른 사이트로 키를 이동하고 싶습니다. 나는이 사용하는 다음 코드를 할 노력하고있어 :
응용 프로그램의 나머지 부분이 변경합니다 (반영으로 내가 그것은 메모리 모두에 나타납니다괜찮를 관찰 한 어떤
keyToMove.Site = newSite;
dataAccess.SaveChanges(); // this method just does: this.entities.SaveChanges();
키가 새 사이트 아래에 나타납니다). 그러나 데이터베이스의 외래 키는 변경되지 않으며 응용 프로그램을 닫고 다시 시작하면 모든 변경 내용이 손실됩니다.
"keyToMove.Site = newSite;"다음에 keyToMove, newSite 및 이전 Site 인스턴스의 EntityState 값은 모두 "변경되지 않음"이며 올바른 수는 없습니다. 또한 SaveChanges는 2를 돌려 주며, 이는 더 이상 나를 혼란스럽게합니다.
set
{
((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<Site>("CmsModel.SiteKeyAssociation", "Site").Value = value;
}
SQL 프로파일 업데이트를 닮은 아무것도에만 DB 엔진에 매우, 매우 긴 전송되지 않습니다 것을 보여줍니다
"사이트"속성에 대한 세터 구현은 내 모델에서 다른 탐색 속성처럼 보이는 고르다. 조건에 따라 다른 엔티티에서 "주요"엔티티 상속 효과
있을 수
것들 열 중 하나에 적용 하였다.
내 데이터 액세스 클래스 인스턴스 (예 : "dataAccess")에 대한 참조로 일부 데이터 액세스를 수행하려는 ViewModels을 제공하기 위해 AutoFac IOC 컨테이너를 사용하고 있습니다.
ObjectContext 인스턴스는이 클래스의 멤버입니다 (주석에 "this.entities"로 표시).
dataAccess 인스턴스는 Singleton Scoped이므로보기 모델 e.i에서 하나의 인스턴스 만 공유해야합니다. "keyToMove"와 "newSite"둘 다 동일한 컨텍스트에 연결됩니다.
이 게시물의 길이는 죄송합니다.하지만 여기에 무슨 일이 벌어지고 있는지 전혀 알지 못하고 가능한 한 많은 세부 정보를 제공하려고했습니다. 추가 정보가 도움이되는지 물어보십시오.
미리 감사드립니다.
yourModel.Designer.cs의 속성 setter을 통해 디버그 및 확인 this.ReportPropertyChanged을()가 호출된다. –
그렇지 않습니다. setter 구현은 다른 탐색 속성과 비슷합니다 (위의 편집 참조). – andrej351
... 우연히 머리가 빨리 빠져 나와 여기서 빠져 나올 수 있으니, 제발 여기에 무슨 일이 벌어 질지 상상해보십시오. – andrej351