2010-12-28 2 views
1

과거에 NHibernate를 몇몇 웹 어플리케이션에서 몇 번 사용했기 때문에 완전히 새로운 것은 아닙니다.Hibernate with Ajax, detached entity 업데이트하기

현재 저는 새로운 웹 애플리케이션을 개발 중입니다. NHibernate와 함께 Ajax를 사용하고 있습니다.

내 응용 프로그램 사용자가 웹 양식을 통해 특정 엔터티의 속성을 편집 할 수있는 몇 페이지가 있습니다. 이 경우 사용자 경험이 중요하므로 모든 것이 아약스입니다.

페이지로드시 사용자가 작업중인 엔티티의 json 객체를 보유하는 javascript 변수가 있습니다. 나는 JavaScriptSerializer을 사용하여 페이지의 출처에 인쇄합니다.

사용자가 '제출'을 클릭하면 양식을 반복하여 모든 개체의 json 개체 속성을 업데이트합니다.

그런 다음 json 객체를 ajax를 통해 만든 WebMethod에 보내 데이터베이스의 엔티티를 업데이트합니다.

이제 데이터베이스에 저장해야하는 업데이트 된 엔티티가 수신되었으므로, 엔티티의 개체가 DataContext에 없기 때문에 DB에 저장할 수는 없습니다. 나는 NHibernate를 사용하여 db에서 동일한 ID로 엔티티를 쿼리하고, 업데이트 된 모든 프로퍼티의 값을 db로부터 얻은 엔티티에 복사 한 다음 변경 사항을 저장해야합니다.

이것은 올바른 방식으로 작업하는 것을 좋아하지 않습니다 ... 내 말은, 이미 데이터베이스에있는 개체를 쿼리해야하는 것과 같이 나를 귀찮게하는 몇 가지가 있습니다. 업데이트 된 값을 복사 한 다음 변경 사항을 db에 저장합니다.

NHibernate가이 상황을 좀 더 잘 지원하는지 궁금합니다.

미리 감사드립니다. gillyb.

+2

IMHO, 동시 요청을 처리 할 때 데이터를 안전한 곳으로 가져오고 싶을 것입니다. 나는 맹목적으로 데이터베이스를 업데이트하는 것은 좋은 생각이라고 생각하지 않습니다. –

+0

@SergeyAkopov 동시 업데이트를 처리하는 작업은 해당 매핑에 따라 해당 패턴을 사용하여 수행 할 수 있습니다. (Versioned entities? => Optimistic locking) 동시성이 염두에 두어야 할 것이지만 그가 일을 시도하는 방식은 여전히 ​​유효 할 수 있습니다. –

+0

그건 그렇고,이 질문은 나에게 해로울 수 있기 때문에 편집했다. OP는 수동으로 NHibernate에 내장 된 지원을하는 작업 솔루션을 제공하고있었습니다. 재개를 위해 깃발을 꽂았습니다. –

답변

2
session.SaveOrUpdate(modifiedObject)