2009-04-15 3 views
1

마지막으로 L2E 프레임 워크를 체크 아웃하고 거의 즉시 문제가 발생했습니다.
예, 알고 있습니다 ... 전에 책을 읽어야합니다.L2Entities, 저장 프로 시저 및 매핑

상황 : 소품

개체 -> ID와 이름을 입력합니다.
엔티티가 id 및 name 열이있는 테이블로 매핑됩니다.
sproc, id 열만 반환합니다.

문제점 : 오류를 발생할이 호출

ObjectResult<MyProp> result = _container.MyStoredProcedure(uberParameter); 

[유죄 방법 간다] 던져 예외 : System.Data.EntityCommandExecutionException : 데이터 판독이 지정과 양립 ' DataBase.MyPropTableObject '. ,

은`t 그 필드를 "그냥 반환"형태, '이름'의 구성원

문제 # 2 .. 같은 이름의 데이터 판독에 대응하는 항목이없는 해당 열에 XML 데이터 형식이 있지만 sproc에서 다음과 같은 원인이되는 fancy select 문을 사용합니다.

메시지 421, 수준 16, 상태 1, 줄 1 xml 데이터 형식은 비교할 수 없으므로 DISTINCT로 선택할 수 없습니다.

질문 :
가 독점적에만이 하나의 sproc이 엔티티 소품에 대한 매핑을 해제 할 수 있습니까?

답변

1

문제 1은 프로 시저가 엔터티를 채울 열이 없기 때문입니다. 테이블을 매핑 한 경우 당신은 정말 당신에게 주어진 ID에 대한 테이블의 이름 열에서 값을 줄 것인가 LINQ

var result = MyEntities.EntityIMapped.First(r => r.id = uberParameter).Name; 

를 사용하여 당신이 그것에서 원하는 필드를 선택 시저가 필요하지 않습니다. 이를 위해 저장된 proc을 사용할 필요가 없습니다.

문제 2는 proc에있는 것처럼 들리지만 xml 데이터 열에 별개의 결과가 많을 것이라고 생각하지만 솔루션을 모르는 것으로 추측합니다.

귀하의 질문에 대한 직접적인 대답은 아니지만 올바른 방향으로 안내해 드리겠습니다.

+0

Sproc을 만질 필요가 없습니다. 그것은 랭킹, 페이징 등으로 전체 텍스트 검색 기능을 가지고 있습니다. XML 데이터 형식의 컬럼을 처리 할 수없는 이유입니다. 이 문제는 잠시 나에게 걸렸다. 그러나 나는 그것을 관리했다. 제외 된 소품 및 중복보기를 사용하여 중복 엔티티를 작성해야했습니다 (최소한 l2e conf xml에서는 데이터베이스에서 무시할 수 있음). 어딘가에서 읽으십시오. 다음 번 업데이트에서 문제가되지 않을 것입니다. –