2011-02-08 6 views
0

100 % 내 DB 스키마를 반영하는 edmx 파일이 있습니다. 이와 함께 필자는 기존 엔티티를 기반으로 사용자 정의 엔티티를 만들 필요가 있습니다. 실제로 여러 엔티티의 필드를 단일 필드로 집계하는보기와 같습니다.동일한 edmx 내의 EF4 사용자 정의 엔티티

문제는 이것이 제대로 작동하지 않는다는 것입니다. 몇 가지 접근법을 시도했지만, edmx에있는 실제 entite와 항상 충돌을 일으켰습니다.

내 DB 스키마를 반영하는 엔티티가 있어야합니다. 따라서 사용자 정의 엔트리를 보유하고 콜리 전을 피하기 위해 다른 edmx 파일을 만들어야합니까?

또한으로 비록 :

  • 저장 프로 시저를 생성하지만 경우 나는 eather 얻을 모든 행과 의 SP에 serach 에 대한 지원을 추가해야하는 SP 결과를 필터링해야 Linq2Objects 필터 ... 이 작업을 수행하지 않습니다!
  • 는보기를 만들고,이 사람은 꽤 잘 일을하고자하지만 난 EF4 디자이너의 제작 사용을 한 장소에서 모든 것을 유지하기 위해 을 시도하려는.

아무도 예제를 가르쳐 줄 수 있습니까?

답변

1

특수한 경우 (테이블 분할, 하이라이팅 매핑)를 제외하고 같은 테이블을 기반으로 두 엔티티를 정의 할 수 없습니다. 이 경우 DefiningQuery를 @James suggest 또는 QueryView으로 사용해야합니다. 차이점은 DefiningQuery가 스토리지 모델에 정의되어 있으며 일반적인 SQL입니다. QueryView는 개념 모델에 정의되어 있으며 이미 존재하는 엔티티 위에 정의 된 ESQL입니다. QueryView는 ESQL의 일부 기능 만 지원합니다 (예 : 집계 함수를 지원하지 않음). 두 경우 모두 EDMX를 직접 수정해야하므로 (XML) 이러한 기능은 디자이너에서 지원되지 않습니다.

@James에서 언급 한 데이터베이스보기는 고급 EF 기능을 사용하지 않으려는 경우에도 옵션입니다. 미리 정의 된 쿼리를 객체 컨텍스트에 표시하고 반환 투영을 사용자 정의 유형에 매핑 할 수도 있습니다.

이러한 방법으로는 데이터를 수정, 삽입 또는 삭제할 수 없습니다.

2

당신이 묘사하고있는 것은 전망이므로 아마도 이것이 올바른 방향 일 것이라고 생각합니다.

DefiningQuery 노드를 사용하여 edmx에보기 코드를 저장할 수 있습니다. 데이터베이스에 뷰를 만들 필요는 없습니다. 그러나이 기능에 대한 디자이너 지원은 없으므로 edmx를 직접 편집해야합니다. 디자이너를 사용하여 데이터베이스에서 edmx를 새로 고치면 변경 사항이 지속되어야합니다. 여기

세부 사항 :

http://msdn.microsoft.com/en-us/library/cc982038.aspx

http://blogs.msdn.com/b/davidebb/archive/2010/10/01/the-easy-way-to-create-an-entity-framework-defining-query.aspx

그냥 데이터베이스에보기를 만들 쉽게, 그리고 디자이너가 발견하고 모델링 할 것이다.

이 엔티티는 읽기 전용이지만 물론이보기를 통해 수정을 지원하려면 UPDATE/INSERT/DELETE에 SP를 할당 할 수 있습니다.

+0

+1 데이터베이스에 직접보기를 생성하는 경우. 왜 이미 거기에있는 것을 활용하지 않겠습니까? – alex

+0

예, 위에서 말한 것처럼 뷰를 만드는 것이 유일한 옵션 이었지만 EF4가 이러한 종류의 요구 사항을 지원한다고 생각하고 뭔가를 놓쳤습니다. 나는 edmx guts를 바꾸는 아이디어가 마음에 들지 않습니다. 그것은 당신이 가장 적게 기대할 때 당신 손에 날리는 종류의 것들입니다. – AlexCode

+0

Lol .. 디자이너들은 우리를 게으른 프로그래머로 만들고 있습니다. 그것은 단지 약간의 XML입니다. 디자이너를 사용하는 것만으로는 EF의 모든 힘을 얻지는 못합니다. 그리고 디자이너는 어떤 경우에도 날아갈 수있는 몇 가지 버그가 있습니다. 모든 것을 알고있는 것이 더 좋습니다. 거기에 몇 가지 아주 좋은 스키마 워드 프로세서가 있습니다 (여기에서 링크 된 CDSL 스펙 등 - http://msdn.microsoft.com/en-us/library/cc982042.aspx) –

관련 문제