() 또는 개체를 조작하는 것은
아무것도 주장하지 않습니다. 현재 폐기 된 DbContext
인스턴스에 이전에 부착 된 인스턴스는 정상적인 인스턴스가 무언가에 의해 인스턴스에 핸들이 있다고 가정하므로 계속 존재합니다. 거기에 메모리가 릴리스되고 결국 아무 것도 아닌 다른 일반적인 인스턴스로 가비지 수집됩니다 경우 핸들이 없을 것입니다. 메모리에있는 엔티티의 상태는 그대로 유지되며 메모리의 어떤 것도 자동으로 되돌려지지 않습니다. 데이터베이스 저장소는 DbContext에서 데이터 저장소로의 호출이 없음을 의미하는 "있는 그대로"로 유지됩니다.
내가 적어도 데이터 저장소에서,이 방법
없음에 거부 변화에 의해 불안정한 상태에서 아무것도 떠납니다. 메모리에서 말하기는 어렵습니다. 코드가 중단 된 위치와 그 시점까지 수정 사항에 대한 종속성에 따라 달라집니다. 상태 비 저장 asp.net 응용 프로그램을 가정 할 수 있습니다. 요청이 단순히 끝나고이 경우 데이터 저장소에서 필요한 항목을 다시 가져와야하므로 다음 요청 중 하나라도 불안정한 상태가 발생하지 않아야합니다.
Windows 응용 프로그램처럼 오래 살았다면 이전에 추적 중이던 인스턴스에 대한 포인터/핸들러가 현재 되돌리기 상태의 메모리 상태로 업데이트되거나 해당 포인터를 릴리스하는지 수동으로 확인해야 할 수 있습니다.
는 지금까지 새로운 DbContext 인스턴스에 관한 한 그들은 모두 그렇게 그들 사이에 계속이없는 서로 독립적으로 작동합니다. 새로운 DbContext는 추적중인 상태 또는 다른 DbContext 인스턴스에 의해 추적 된 상태에 대해 알지 못합니다.
이것은 실제로 내 질문을 해결하는 유일한 대답이다. 처리 방법을 설명하는 대신 DbContext 자체 내의 엔터티에 초점을 둡니다. 어쨌든, 당신이 말한 것은 말이됩니다. 컨텍스트의 엔티티는 참조가 없을 때마다 GC 할 다른 객체와 마찬가지로 존재합니다. '.SaveChanges()'를 호출하지 않으면 변경 사항이 데이터베이스로 푸시되지 않습니다. 곧 답변으로 표시 할 가능성이 높습니다. – oscilatingcretin