2011-10-18 3 views
0

프로젝트에 대해 MVC, NHibernate 및 Sharp 아키텍처를 사용하고 있습니다.
SaveOrUpdate을 사용하여 개체 (엔티티)를 저장할 때마다 업데이트되는 하위 엔티티도 있습니다. 그러나 하위 엔티티를 업데이트하는 대신 모든 하위 엔티티에 대해 DELETE-INSERT을 실행합니다.Nhibernate.ISession SaveOrUpdate 내부에 정확히 무엇이 들어가고 있습니까?

도움이됩니다.

+0

어떻게 하위 항목을 수정하고 있습니까? –

+0

컬렉션에 항목을 수정/추가하는 대신 엔티티에서 컬렉션 속성을 수정하면 이러한 종류의 동작이 발생합니다. NHibernate는 속성 자체에 발생하는 변경을보고 삭제/삽입을 수행합니다. 하위 항목을로드하여 엔터티에 할당하는 경우에는 수행하지 마십시오. 열심히 그들을로드하거나 게으른 그들을로드합니다. – Phill

+0

질문을 자세히 설명해주십시오. 제한된 설명을 다른 사람들이 돕는 것은 매우 어려울 것입니다. – frictionlesspulley

답변

0

기존 하위 개체를 업데이트하지 않기 때문에 발생합니다. 자식 개체의 전체 모음을 바꿉니다. 따라서 Nhibernate는 새로운 컬렉션을 저장해야한다고 생각합니다.

+0

예. 이것은 정확하게 일어나고있는 일입니다. 하위 엔티티 데이터베이스에 데이터가 없으면 데이터베이스에 하나의 삽입 만 수행합니다. 그러나 이미 자식 엔티티에 사용할 수있는 데이터가 있으면 이전 행을 삭제 한 다음 현재 데이터를 다시 삽입합니다. –

+0

이것이 어떻게 수정 될 수 있는지에 대한 제안은 하위 엔티티의 새 인스턴스를 추가 할 때 이전 엔티티를 삭제하고 다시 삽입하는 대신 새 행을 추가해야합니다. –

+0

컬렉션을 지정했기 때문입니다. 컬렉션을 할당하지 말고 기존 컬렉션에 항목을 추가하십시오. – Phill

관련 문제