2014-12-23 3 views
0

BreezeController에서 Breeze.js와 C# WebAPI를 사용합니다. 클라이언트 웹 페이지에서 엔터티를 업데이트하고 업데이트 용 WebAPI로 전달하고 엔터티를 저장 한 다음 경고를 다시 보내려고합니다.Breeze Web API에서 오류 대신 경고를 반환합니다.

[HttpPost] 
public SaveResult SaveChanges(JObject saveBundle) {} 

경고에 대한 정보와 함께 SaveResult를 반환하는 방법이 있습니까? 오류가 아니라 경고입니다.

예를 들어, 거주자의 나이를 저장하고 있습니다. 나이가 <이고 [오류가 아님] 50 세인 경우 비즈니스 규칙에 따라 거주자의 나이가 올바르지 않을 수 있음을 계속 경고하고 싶습니다.

saveResult.Errors.Add(new EntityError() { 
         PropertyName = "Age", 
         ErrorName = "Warning", 
         ErrorMessage = "The age of the resident is less than 50. You may want to verify that you entered the correct age." 
        }); 

나는 (이것은 내가 원하는 동작입니다)이 작업을 수행 할 경우

  • 이 엔티티가 제대로 저장됩니다.
  • 경고 메시지는 saveResult 구조로 되돌려 보내집니다.
  • 엔티티가 서버에서 올바르게 업데이트되고 saveResult로 다시 전송됩니다 (즉, 시스템에서 생성 한 내 엔티티의 기본 키에 새 ID가 포함됨).

그러나 (이 내가 원하는 행동이 아니다) :

  • 클라이언트에서 기업은 업데이트되지 않습니다. 즉, PK는 갱신되지 않고 엔티티는 여전히 보류 상태 (저장되지 않음)에있다.

Breeze.js가 아마도 (올바르게) 오류로 해석하므로 SaveResult에서 오류를 반환한다는 것이 확실합니다. 그러나 Breeze 모델을 사용하여 경고를 반환하는 방법을 알지 못하지만 여전히 모든 기능을 갖추고 있습니다.

그런데 WebAPI를 호출하기 전에 클라이언트 측에서 해당 유효성 검사를 수행 할 수 있지만 모든 유효성 검사를 서버 측으로하고 싶습니다. 특히이 유효성 검사 중 일부는 매우 복잡하기 때문에 특히 그렇습니다.

제안 사항?

답변

0

바로 지금 바람에는 '오류'와 달리 '경고'개념이 없지만 개념이 유용하다는 데 동의합니다. 이것을 breeze User Voice (http://breezejs.uservoice.com/)의 기능 요청으로 추가 할 수 있으며 충분한 관심을 얻으면 확실하게 살펴볼 수 있습니까?

+0

제안 해 주셔서 감사합니다. 나는 이것을 바람 소리의 제안으로 추가 할 시간을 가졌다. 바라건대, 이것은 다음 릴리스로 만들 것입니다. 그동안 어떻게 구현할 수 있는지 생각해보십시오. –

+0

이것에 대해서는 자세히 생각해 보지 않았지만 경고 메시지가 나타날 때마다 저장 중에 서버에 'entityType'에 '경고'라는 매핑되지 않은 속성을 추가하고이를 서버에 채울 수 있습니다. 그러면 클라이언트에 다시 전달되어 저장이 정상적으로 완료됩니다. –

+0

좋은 아이디어, 매핑되지 않은 속성은 다시 가져 와서 브리즈 클라이언트에 의해 매핑됩니다. 그런 다음 경고를 검색 할 수 있습니다. –

관련 문제