2013-05-30 3 views
0

그래서 제대로 된 것 같아서 원하는 방식으로 구현하는 데 도움이 필요합니다. 그래서이 읽기 전용 엔티티를 완성하기 위해 EFContextProvider의 서브 클래스를 만들고 메소드를 오버라이드해야한다는 것을 알고 있습니다. SaveChanges을 무시함으로써이 작업을 수행 할 수 있다는 것을 알고 있지만, Dictionary 속성을 덮어 써야하고, 그 대신 readonly 속성을 그대로 두어야한다고 생각합니다. Dictionary. 이게 효과가 있니? 그렇다면 효과는 무엇입니까?읽기 전용 OData 엔터티를 만들기 위해 EFContextProvider를 재정의하는 방법

+0

확실하지 않은 질문입니다. 정확히 무엇을 성취하려고합니까? 죄송합니다. 밀도가 높은 경우 ... –

+0

기본적으로 내 Entity Framework 엔터티 중 하나가 내 응용 프로그램에 저장되지 않도록하고 싶습니다. 그게 전부입니다. 나는 생각을 더 많은 정보로 업데이트 할 것입니다. – mtleising

+0

실제로 나는 그것을 알아 냈다고 생각합니다. 조금만 먼저 테스트해야합니다. – mtleising

답변

1

"읽기 전용"엔티티에 변경 사항을 저장하지 못하게하는 클라이언트 로직이 있다고 가정합니다. 그러면 "읽기 전용"엔터티를 저장하려고 시도하는 요청을 거부해야하는 서버를 보호해야합니다.

만약 그렇다면 엔티티가 세이브 할 수 있는지 테스트하고 그렇지 않은 경우 throw하는 로직을 EFContextProvider.beforeSaveEntity에 넣습니다. 종종 엔터티를 ISaveable (내 인터페이스)에서 상속 받도록 설정하고 그렇지 않은 엔터티를 볼 때 예외를 throw합니다.

+0

흠 잘 생각해 보면, OData가 아닌 다른 엔드 포인트 (별도 컨트롤러)가 있지만 OData가 아닌 새로운 엔티티를 제외하고 엔티티가 읽기 전용으로 OData 컨트롤러를 읽을 수 있기를 원합니다. 이 엔티티를 클라이언트에서 발생하는 로그로 생각하고 서버로 다시 보내고 싶습니다. 내 응용 프로그램은 내부 네트워크 대시 등입니다. 지금은 작동하고 있습니다. 가장 좋은 방법이라고 확신하지는 않습니다. . 형식 검사를 통해 EFContextProvider.beforeSaveEntity를 재정 의하여 엔티티를 확인하고 발견 된 경우 false를 반환합니다. 이러한 프로젝트를 별도의 프로젝트로 분리해야한다고 생각하기 시작했습니다. – mtleising

+0

알 수 있습니다. 개인적으로 컨트롤러에서 EFContextProvider를 가져 와서 별도의 구성 요소로 래핑합니다. 내가 거기에서 구성 할 수 있고 다른 컨트롤러보다 OData 컨트롤러에 다르게 구성 할 수 있습니다. 말이 돼? – Ward

+0

그래, 네가 가려고하는 것을 내가 생각해 볼 수있을거야. 고마워요 구청 – mtleising

관련 문제