프로젝트에 대해 MVC, NHibernate 및 Sharp 아키텍처를 사용하고 있습니다.
SaveOrUpdate
을 사용하여 개체 (엔티티)를 저장할 때마다 업데이트되는 하위 엔티티도 있습니다. 그러나 하위 엔티티를 업데이트하는 대신 모든 하위 엔티티에 대해 DELETE-INSERT
을 실행합니다.Nhibernate.ISession SaveOrUpdate 내부에 정확히 무엇이 들어가고 있습니까?
도움이됩니다.
프로젝트에 대해 MVC, NHibernate 및 Sharp 아키텍처를 사용하고 있습니다.
SaveOrUpdate
을 사용하여 개체 (엔티티)를 저장할 때마다 업데이트되는 하위 엔티티도 있습니다. 그러나 하위 엔티티를 업데이트하는 대신 모든 하위 엔티티에 대해 DELETE-INSERT
을 실행합니다.Nhibernate.ISession SaveOrUpdate 내부에 정확히 무엇이 들어가고 있습니까?
도움이됩니다.
기존 하위 개체를 업데이트하지 않기 때문에 발생합니다. 자식 개체의 전체 모음을 바꿉니다. 따라서 Nhibernate는 새로운 컬렉션을 저장해야한다고 생각합니다.
예. 이것은 정확하게 일어나고있는 일입니다. 하위 엔티티 데이터베이스에 데이터가 없으면 데이터베이스에 하나의 삽입 만 수행합니다. 그러나 이미 자식 엔티티에 사용할 수있는 데이터가 있으면 이전 행을 삭제 한 다음 현재 데이터를 다시 삽입합니다. –
이것이 어떻게 수정 될 수 있는지에 대한 제안은 하위 엔티티의 새 인스턴스를 추가 할 때 이전 엔티티를 삭제하고 다시 삽입하는 대신 새 행을 추가해야합니다. –
컬렉션을 지정했기 때문입니다. 컬렉션을 할당하지 말고 기존 컬렉션에 항목을 추가하십시오. – Phill
어떻게 하위 항목을 수정하고 있습니까? –
컬렉션에 항목을 수정/추가하는 대신 엔티티에서 컬렉션 속성을 수정하면 이러한 종류의 동작이 발생합니다. NHibernate는 속성 자체에 발생하는 변경을보고 삭제/삽입을 수행합니다. 하위 항목을로드하여 엔터티에 할당하는 경우에는 수행하지 마십시오. 열심히 그들을로드하거나 게으른 그들을로드합니다. – Phill
질문을 자세히 설명해주십시오. 제한된 설명을 다른 사람들이 돕는 것은 매우 어려울 것입니다. – frictionlesspulley