2010-07-15 4 views
2
우리는 데이터 액세스를위한 엔티티 프레임 워크 4를 사용하기 시작했는데 문제 나 이해 아마도 부족 건너 한

와 모델에 저장 프로 시저를 매핑.엔티티 프레임 워크 4 : 추가 매개 변수

는 우리의 현재 시스템은 저장 프로 시저에 크게 의존하고, 이러한 과정은 우리가/삽입/업데이트/삭제를 선택 할 때이를 계속 사용할 필요가 그래서 몇 가지 필요한 비즈니스 로직을 포함하고있다. - 사용자 아이디, 이름

성을

우리는 엔티티 테이블을 매핑했습니다의이이 사용자 개체이며, 다음과 같은 속성이 있습니다 예를 들어 가정 해 봅시다 :

우리가 겪고있는 문제는 다음과 같다

이제 sproc에서 사용자 삽입을 위해 FirstName, LastName, CreatedById를 매개 변수로 허용합니다. 우리의 사용자 개체로

는 우리가 우리의 엔티티의 프로퍼티는 "CreatedById"매개 변수에 매핑 할 수 없음을 나타내는 오류가 더 CreatedById이 없습니다.

이제 Entity에 CreatedById 스칼라 속성을 수동으로 추가하는 것이지만 CreatedById에 매핑되는 데이터 소스의 User 테이블에는 Field가 없다는 문제가 있습니다. 일반적으로 우리가 전달하고자하는 추가 속성은 저장되는 것이 아닙니다.

이제 우리는 함수 가져 오기로 프로 시저를 매핑 할 수 있고 .AddObject, .DeleteObject, .SaveChanges 방법으로 개체를 조작하는 것을 방해 할 수는 있지만 해결 방법이 없다는 점에서 잠재적 인 솔루션이 있습니다. 그것에 대해 갈 것입니다. 좋은 질문이다

답변

0

. 내가 말할 수있는 몇 가지 옵션이 있습니다. 엔터티를 테이블에 매핑하는 대신 으로 매핑하고 뷰를 매핑 한 다음 뷰에서 CreatedById를 반환하면 문제가 해결됩니다.

두 번째 옵션은 CreatedById에 대한 기본 값으로 실제 저장 프로 시저 만 이름, 성을 소요하고 호출 오버로드 된 저장 프로 시저를 만드는 것입니다. 데이터베이스 레이어에서 오버로드를 만들거나 인라인 저장 프로 시저를 지원하는 ssdl 레이어의 모델에서 오버로드를 만들 수 있습니다. 불행하게도 우리의 문제를 해결하지 않을 것이다 당신의 응답을

+0

감사 널 (null) 성 @

간부 MYPROC의 @의 firstName을은, 우리가 이미 호출하는 절차는 추가 매개 변수에 대한 기본 값을 설정합니다. 전달하려는 매개 변수는 DB에 표시되지 않으므로보기도 작동하지 않습니다. 아마도 CreatedById이 경우 나쁜 예였다. 문제의 매개 변수는 기본적으로 다른 데이터를 처리하는 방법을 나타내는 데 사용됩니다. 또 다른 예는 매개 변수가 "소스"인 경우 사용자 생성 요청이 어디서 왔는지 나타냅니다. 그러면 사용자를 저장하는 방법이나 UserType을 설정하는 방법에 영향을줍니다. –

관련 문제