2013-05-09 4 views
0

다음 시나리오에서 생각하고 있습니다. 클라이언트 측에서 두 엔티티를 업데이트하고 json 번들과 함께 POST를 제출합니다. 서버 측에서는 인터셉트를 수행하고 비즈니스 로직을 적용합니다. 엔티티 중 하나에 대한 저장은 작동하지만 다른 엔티티에는 실패합니다. 귀하의 의견으로는 올바른 해결책과 그 이유는 무엇입니까? 1. 롤백을 수행하고 클라이언트에서 예외를 반환해야합니까? 2. 첫 번째 엔터티에 대한 업데이트를 커밋하고 해당 저장이 엔티티? IdeaBlade의 사람들은 saveChanges를 단일 트랜잭션으로 간주하므로 모든 CRUD 기능이 단일 POST에 포함되므로이 점을 판단하면 올바른 방법이어야한다고 생각합니다. 그러나 나는 모든 합리적인 의견을 고맙게 생각합니다. 감사합니다!Breeze SaveChanges partial fail

+0

두 엔티티를 독립적으로 저장할 수 있고 /해야하는 것처럼 보입니다. 이것이 당신의 비즈니스 논리라면 두 개의 SaveChanges()를 제출하지 않는 이유는 무엇입니까? – pawel

+0

배치 저장이 필요하기 때문에. –

답변

1

글쎄 그것은 당신이하는 일에 달려 있습니다. 방금 롤백하면 많은 시간을 절약 할 수있을 것입니다. 정말로 원하는 경우 저장된 실패한 엔티티와 성공한 엔티티 목록을 반환 할 수 있습니다. 그런 다음 사용자 (오류가 사용자 오류라고 가정)는 오류가있는 항목을 변경하고 다시 만 커밋 할 수 있습니다. 그러나 이것은 어려워 질 수 있습니다. Breeze는 a state to each entity을 첨부합니다. 이제 관리가 필요합니다. 따라서 응답에서 어떤 엔티티가 실패했는지, 어떤 엔티티가 성공했는지 파악한 다음 클라이언트에서 상태를 업데이트해야합니다. 그렇지 않으면 필요하지 않은 커밋을 다시 제출하게됩니다. 드문 경우가 발생하기 때문에 클라이언트에 비즈니스 로직을 넣은 다음 서버에서 롤백 (그리고 문제를 해결할 수 있도록 이벤트를 기록)하는 것이 시간면에서 더 좋은 투자라고 생각합니다. 그게 도움이 되니?

+0

귀하의 답변은 좋지만, 나는 그 중 하나를 수락하기 전에 더 많은 답변을보고 싶습니다 :) –

+0

나중에 남자, 행운을 듣고 귀하의 응용 프로그램이 잘 나오기를 바란다. – mtleising