2010-05-11 2 views
2

몇 년 전부터 질문이 있습니다. 아시다시피 엔터티 프레임 워크는 데이터베이스를 개체 지향 액세스 모델로 모델링하려고하는 ORM 도구입니다. 내가 본 모든 샘플은 데이터베이스 테이블에 직접 묻습니다. 이제 데이터베이스에서 뷰의 역할은 무엇입니까? 뷰는 좀 더 친숙한 방식으로 데이터베이스를 모델링하는 데 사용되었는데, 즉 여러 개의 물리적 테이블과 하나의 로직 테이블이 사용되었습니다. 예를 들어, 복잡한 관계형 모델을 저장 프로 시저에 숨김으로써 쿼리 내부의 뷰가 각 저장 프로 시저에 대한 쿼리 조인을 반복해서 재현하는 것보다 훨씬 쉬워졌습니다. 그래서 문제는 저장 프로 시저가 그것을 활용할 수 없다면 엔티티 프레임 워크가 왜 좋은가라는 것입니다.엔티티 프레임 워크 및 데이터베이스 로직

나는 다른 방식으로 똑같이 설명하려고 노력할 것이다. category라는 테이블이 있습니다. elements라는 또 다른 테이블이 있습니다. 각 요소는 여러 범주에 속할 수 있으며 하나의 범주에는 여러 요소가 포함될 수 있습니다. 각 카테고리에 대해 얼마나 많은 요소가 있는지 계산하려고합니다 (이 계산은 매우 복잡한 수식을 가지고 있다고 생각하지만 간단합니다). 이제 문제가 발생합니다 :

선택 1 :이 계산으로 뷰 VCategory를 만듭니다. 선택 2 : 엔티티 프레임 워크에 테이블 범주를 포함시킨 다음 계산을 포함하도록 클래스를 확장합니다.

찬성 선택 1 : 계산은 모든 사람에게 가능합니다. 컨 트래 스트 선택 1 :보기를 업데이트 할 수 없습니다.

프로 선택 2 : 테이블을 업데이트 할 수 있습니다. 콘트라스트 선택 2 : 계산은 .NET 호환 시스템에서만 가능합니다.

더빙 중 하나 선택 1 : 엔티티 프레임 워크를 사용하여이 업데이트를 처리하는 방법. 보기 가져 오기 및 삽입, 업데이트, 저장 프로 시저로 매핑 매핑?.

더빙 중 하나 2 : 저장 프로 시저가 엔티티 프레임 워크의 이점을 얻을 수 없습니다. 데이터베이스에서 하나의 저장 프로 시저에이 계산이 필요한 경우 어떻게해야합니까? 정말 당신이 무슨 뜻인지 이해하지 마십시오

+0

절대적으로 저장 프로 시저를 EF에 바인딩 할 수 있습니다. –

+0

하지만 그건 중요하지 않습니다. .net 프레임 워크를 지원하지 않는 다른 시스템을 상상해보십시오. 데이터베이스에서 뷰를 사용하면 다른 시스템이 뷰를 사용하여 모델링 된 도메인의 이점을 취할 수 있습니다. 또는 sqlserver 작업을 상상하면 엔티티 프레임 워크의 이점을 사용할 수 없습니다. 어떻게 해결 되었습니까? –

+0

EF에서 뷰를 매핑 할 수도 있습니다. 다른 곳으로 포팅 할 때 다시 쓰지 않아도되기 때문에 모델에서 설명하는 논리를 쓰는 것을 선호하지만 어느쪽으로 든 할 수 있습니다. –

답변

1

...

사실

가 업데이트 할 수있는 경우에 당신이 prolly 전망 당신의 ORM을 사용할 수 있습니다 ... 그래서 ORM + 절차를 사용하는 방법에 대해? 엔티티 프레임 워크에서 db 뷰를 계속 사용할 수 있으며 "친숙한 방식"으로 모델을 얻을 수 있습니다.