EF4 - Changes not being captured between sessions
-
22-09-2019 - |
문제
I'm trying to test detaching an entity from one context, making modifications to it, creating a new context, attaching it, and having the changes made between sessions persist. I don't seem to be able to get this working appropriately. I've tried calling DetectChanges as well as ApplyCurrentValues w/ no success. Below is what I've got so far. These aren't POCO's and I don't want to treat them as such. I just want to be able to detach an entity, make changes to it, and re-attach it. Thanks!
OCConsumer consumer; using (var ctx1 = new CMSStagingContext()) { consumer = (from c in ctx1.OCConsumers select c).FirstOrDefault(); Console.WriteLine("Retrieved {0} - {1} {2}", consumer.CustomerId, consumer.FirstName, consumer.LastName); ctx1.Detach(consumer); } consumer.BirthDate = "10/22/1981"; using (var ctx2 = new CMSStagingContext()) { ctx2.Attach(consumer); ctx2.ApplyCurrentValues("OCConsumers", consumer); ctx2.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave | System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave); }
해결책
예제 코드를 보면서 매핑 플러그인은 내가 기대할 것으로 기대하는 것과 정확하게 작동하는 것입니다.컬렉션에서 fromJS
를 호출하면 맵핑 플러그인에 효과적으로 알려줍니다. 이는 해당 컬렉션의 새 내용입니다.예 :
두 번째 줄에 업데이트되었는지 또는 단순히 ID : 2를 제거했는지 여부를 어떻게 알 수 있습니까?
하나를 추가 할 수는 있지만 데이터를 단순히 업데이트로 처리하는 적합한 방법에 대한 언급을 찾을 수 없습니다.매핑 된 배열은 mappedIndexOf
와 같은 도움이되는 방법으로 특정 항목을 찾을 수 있습니다.업데이트 데이터 세트를 받으면 단순히 루프를 반복하면 항목을 찾아서 해당 특정 항목에 대한 맵핑을 맵핑합니다.이것은 재사용 가능한 방법으로 쉽게 일반화 될 수 있습니다.