2013-03-21 2 views
4

고객이 문자열 끝에 공백을 추가하는 습관이있는 ASP.NET MVC 웹 응용 프로그램에서 Entity Framework Code First를 사용하고 있습니다.Entity Framework에서 문자열 자르기 저장

분명히 Trim()은 문제를 해결하는 정답이지만 프로젝트 전체에서 모든 것을 다듬는 것을 기억하는 것은 옳지 않습니다. 일부 파고 들었고 ASP.NET MVC: Best way to trim strings after data entry. Should I create a custom model binder? 사용자 정의 모델 바인더를 만든 위치를 찾았지만 모델이 바인드 될 때 응용 프로그램의 각 페이지로드에 성능이 저하 될까봐 걱정됩니다. SaveChanges()이 트리밍되는 것처럼 보입니다. 데이터베이스에 트리밍 된 내용이 저장되기 때문에 가장 좋은 수행 방법이 될 것입니다.

내 질문에 SaveChanges()을 무시하고 ObjectContext에서 모든 추가 및 수정 된 개체를 가져 와서 리플렉션을 사용하여 모든 문자열을 여기에 맞게 다듬을 수 있습니까? 또는 모델 바인더가 올바른 방법입니까?

+0

어디서나 정말로이 작업을 원한다면 사용자 지정 모델 바인더로 이동하십시오. 하지만 트리밍이 모든 분야에서 절대적으로 필요하다는 것을 확신하지 못합니다 ... 여러 번, 당신은 상관 없어요, 그렇죠? 괜찮으 시다면, 어디에서나 필요하지 않은 곳에서 자르기 만하십시오. 퍼포먼스 히트 때문에, 당신은이 퍼포먼스에 갇혀 있기 전에 다른 퍼포먼스 문제가있을 것이라고 생각합니다 ... –

+1

커스텀 모델 바인더가 그것을 할 수있는 것으로 보입니다. 또한,보다 선택적으로하고 싶다면 SaveChanges()를 재정의하는 대신 [SavingChanges] (http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext)에 연결할 수 있습니다. savingchanges.aspx) 이벤트를 대체 할 수 있습니다. – nkvu

+0

@ RaphaëlAlthaus 데이터가 사용자에게 표시되는 방식 때문에 문제가 몇 번 이상 있습니다. 트림을 패치 워크로 만드는 대신 올바른 방법으로 문제를 해결하려고합니다. –

답변

5

성능에 대해 너무 많이 걱정한다고 생각합니다. 모델 바인더는 우리의 전체 어플리케이션에 대해 정확한 것을 수행합니다.

MVC 프레임 워크는 꽤 크며, 여분의 모델 바인더는 많은 오버 헤드가 아닙니다.

또한 트림을 방지해야하는 경우도있었습니다. 따라서 모델 바인더는 특정 필드를 제외 할 수 있으므로 완벽했습니다.

모델 바인더는 표준 MVC 동작입니다. 당신이 그것의 숨겨진 DB 레벨에서 그것을한다면.

그래서 나라면 ModelBinder에서 할 것입니다.

관련 문제