2009-06-04 3 views
0

Entity Framework를 사용하여 Asp.net MVC 사이트를 만들고 데이터베이스에 커밋하지 않고 여러 요청에서 메모리에 새로운 엔터티 및 업데이트 된 엔터티를 유지하는 방법을 알고 싶습니다.
예를 들어 사용자가 엔티티를 편집하기 위해보기로 이동하면 해당보기에서 엔티티에 하위 항목을 추가 할 수 있습니다. 사용자가 페이지의 "저장"단추를 클릭 할 때까지 데이터베이스에 변경 내용을 커밋하지 않습니다.
나는 내가 이해하는 ObjectContext를 유지하지 않을 것을 선택했다. 본질적으로 엔티티를 가져 와서 세션 상태 또는 이와 동등한 위치에 유지하고 변경 한 다음 사용자가 페이지에서 작업을 마쳤 으면 엔티티를 데이터베이스에 제출하려고합니다.
이 작업을 수행하는 방법에 대한 의견이 있으십니까?Entity Framework 엔터티의 지연 커밋

답변

1

ViewData 컬렉션은 여러 요청간에 개체를 지속시키기위한 임시 "스크래치 패드"입니다. Session 객체와 같은 방식으로 작동하지만 수명이 짧습니다.

기본 MVC 프로젝트에서 ViewData [ "Message"]를 사용하여 인덱스보기에 메시지를 표시하는 홈 컨트롤러에서이 예제를 볼 수 있습니다.

+0

아, 그게 좀 더 의미가있어, 철수 MVC와 다른 개념적 문제가 보인다. –

0

나는이 문제를 찾아 비슷한 문제를 발견했다. 다른 사람이 같은 상황에있는 경우 Josh E의 대답이 잘못되었습니다. ViewData는 여러 요청에 걸쳐 유지되지 않으며 동일한 요청 내에서 발생하는보기로 데이터를 전달하기위한 것입니다. TempData는 여러 요청간에 지속되지만 읽은 후에는 값이 지워집니다.

지원되는지 여부를 알기에는 Entity Framework에 익숙하지 않지만 세션에 모든 (직렬화 가능?) 개체를 저장할 수 있습니다. 그러나 이러한 객체의 수명은 수동으로 제거하지 않는 한 세션 수명에 따라 다릅니다. 또한 이것은 상당한 양의 메모리를 차지할 수 있습니다. 가장 바람직한 방법은 이것을 관리 할 수있는 지속성 프레임 워크를 사용하는 것입니다. Entity Framework에서이 작업을 수행 할 수 있는지 여부는 알 수 없습니다. ADO가 붙어있는 사람들에게는 아직 좋은 해결책을 찾지 못했습니다.