문제

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와 같은 도움이되는 방법으로 특정 항목을 찾을 수 있습니다.업데이트 데이터 세트를 받으면 단순히 루프를 반복하면 항목을 찾아서 해당 특정 항목에 대한 맵핑을 맵핑합니다.이것은 재사용 가능한 방법으로 쉽게 일반화 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top