2009-10-23 3 views
2

ASP.NET 응용 프로그램을 개발할 때 종종 사용자가 데이터베이스의 레코드를 만들거나 검색하거나 업데이트 할 수있는 양식을 만듭니다. 제품이나 다른 주문/주문 세부 관계에 카테고리를 추가하는 것과 같이 내가 만드는 항목에 하위 레코드를 추가 할 수 있어야하는 경우가 종종 있습니다. 일반적으로 DropDownList를 사용하여 가능한 자식 레코드의 목록을 표시 한 다음 DataGrid를 사용하여 어떤 자식이 이미 부모의 일부인지 보여줍니다. 현재 ASP.NET에서이 작업을 수행하는 유일한 방법은 DB에 부모 레코드를 먼저 저장해야 PK/FK 관계를 할당 할 수 있으므로 자식 레코드를 보관하는 DataGrid를 DataBind에 연결할 수 있습니다.ASP.NET에서 연결이 끊긴 아키텍처에서 DataBound 컨트롤을 사용하려면 어떻게해야합니까?

제가 알고 싶은 것은 양식을 구현하여 이러한 DataGrid에서 레코드를 추가하거나 제거 할 수 있지만 실제로 사용자가 '저장'을 클릭하여 생성 또는 업데이트 할 때까지 변경 사항을 커밋하지 않는 것입니다. 한 번에 모든 필요한 기록. 데이터 뱅크에서 더 잘 작동한다면 SubSonic에서 LINQ로 마이그레이션하기 시작했습니다. 그것은 HTTP의 무국적 상태로 꽤 어려워 보입니다.

어떤 생각은 크게,

마이크

답변

1

당신은 이것에 대한 캐시 DataSet를 사용할 수 있습니다 감사합니다. 이들은 테이블 기반 관계형 데이터의 메모리 내 표현으로 사용되도록 만들어졌습니다. 실제로 실제로 여러 가지 이유로이 방법을 권장하지 않지만 서버에서 데이터 집합을 캐싱하고 포스트 백을 통해 사용자가 추가, 편집, 삭제 등의 작업을 수행 할 수 있도록 허용 한 다음 마지막에 실제 기본 데이터베이스에 변경 사항을 유지합니다.

나는 이것을 수행하는 더 좋은 방법은 사용자가 트랜잭션 내에서 트랜잭션을 입력 할 때 기본 데이터베이스의 모든 변경 사항을 작성한 다음 끝에 트랜잭션 만 커밋하는 것입니다.

+0

내가 궁금한 점이 있으면 추천을 권해주세요. DataSet과 관련하여 읽은 성능 문제 때문입니까? – mclark1129

+2

웹 응용 프로그램에서 데이터를 일찍 그리고 자주 커밋하지 않으면 세션이 만료 될 때 수행 한 모든 작업을 잃을 수 있습니다. –

+1

@Mike C : 기독교의 요점은 문제의 큰 부분입니다. 또한 웹 응용 프로그램에서 캐싱하는 아이디어는 일반적으로 좋아하지 않습니다. 서버 리소스를 결코 전혀 사용하지 못할 수도있는 것으로 할당하기 때문입니다. 그리고 DataSet은 일반적으로 캐시하기에 꽤 큰 것입니다. – MusiGenesis

관련 문제