2012-07-27 3 views
0

나는 모범 사례에 대한 실제적인 조언을 찾고 있으므로 상황을 설명 할 것입니다. 우리는 복잡한 데이터베이스를 가지고 POCO와 EF 4를 기반으로 구축 된 상당히 큰 어플리케이션을 가지고 있습니다. 우리가 Entity Framework에 만족해 왔지만 다음 시나리오 (매우 간단하게)와 같은 명확한 성능 향상이 있어야합니다.엔티티 프레임 워크 및 저장 프로 시저 불일치 엔티티/모델

우리는 자신의 즐겨 찾기에 추가 한 사용자의 수집 및 등급 (1-5)의 모음이 뉴스라는 테이블 한

예를 들어, 사용자가이 :

public class News 
{ 
    public virtual int NewsId; 
    public virtual string Title; 
    .......etc.... 

    public virtual ICollection<User> UserFavourites { get; set; } 
    public virtual ICollection<Rating> Ratings { get; set; } 
} 

우리는 저장 작성한 절차를 통해 사용자에게 뉴스를 반환하고 EF를 사용하여 ICollections에서이 데이터를 작성하는 대신 즐겨 찾기 여부와 데이터를 요청한 사용자가 이미 등급을 매겼는지 여부 및 News의 현재 등급을 반환 할 수 있습니다 우리는 아래의 대상으로 끝납니다.

public class NewsDataModel 
{ 
    public int NewsId; 
    public string Title; 
    .......etc.... 

    public bool IsFavourite { get; set; } 
    public bool IsRated { get; set; } 
    public double Rating { get; set; } 
} 

저장 프로 시저가 훨씬 빠릅니다 단일 데이터베이스를 여러 번 호출하지만 위입니다 뉴스의 POCO 클래스 일치하지 않습니다 sproc에 의해 반환 된 데이터가 될 수 게으른로드와 EF보다는했다.

우리는 엔티티 프레임 워크 관련 클래스 또는 저장 프로 시저와 ADO.NET으로 채우는 사용자 정의 DataModel 클래스를 반환 할 수있는 INewsRepository를 보유하고 있으므로이 작업을 진행하는 가장 좋은 방법을 찾으려고 노력했습니다. 이것은 기분이 좋지 않다. 엔티티 프레임 워크보다 sproc을 사용하면 훨씬 빠를 수있는 여러 테이블에서 데이터로 구성된 단일 객체를 원할 때 이러한 시나리오를 처리하는 가장 좋은 방법에 대해 다른 사람들의 조언이나 통찰력을 존중할 것이다. 지연로드를 사용하는 호출 어떤 도움

답변

0

에 대한

많은 감사 NewsDataModel의 인스턴스를 반환 저장소에 새로운 방법 아무 문제가 없습니다 - 그것은 뉴스 정보로 구성 데이터 클래스이기 때문에 그것은 당신의 INewsRepository의 범위에 아직도있다. 그렇지 않으면 정의한 모든 데이터 모델에 대한 저장소를 갖게됩니다.

관련 문제