2013-06-25 4 views
0

Linq-to-SQL을 사용하여 모델을 만듭니다. 모든 사용자가 좋아하는 영화를 나열하는 Movies 테이블이 있습니다.모델을 뷰 모델에서 안티 패턴으로 쿼리하고 있습니까?

내 VM에는 현재 사용자에게 액세스 권한이 있습니다. 모든 사용자가 좋아하는 영화를 얻으려면 linq 엔티티를 호출하고 싶습니다. 내 VM의 메소드에서 직접 Movies 테이블에 대한 실제 linq 쿼리를 작성하는 것은 나쁜 습관입니까?

Public Class MyVM 
    Public Sub GetMovies() 
     'some linq query to get the movies based on the user's id 
    End Sub 
    ...more stuff... 
End Class 

또는 내 모델에서 그 방법을 만 모델 또는 저장소에서 GetAll(ByVal id as Integer) 함수를 호출해야합니까?

나는 패턴에 아주 익숙하다. 나는 패턴이 더 많은 것을 알고 있지만 상황이 발생할 때 그 결정을 내리기 전에 패턴을 올바르게 따라 가고 싶습니다.

답변

1

뷰 모델은 ASP.NET MVC의보기와 같이 데이터를 나타냅니다.

예를 들어 사용자 데이터를 표시해야하는보기가 있다고 가정 해 보겠습니다. 서비스 또는 저장소 호출 (데이터베이스)에서 ID를 기준으로 User 객체를 반환합니다. 그런 다음이 User 객체를 뷰 모델에 매핑합니다. 그런 다음이 뷰 모델을 뷰에 리턴하고 뷰는 뷰를 사용하여 사용자 데이터를 클라이언트에 표시합니다.

만약 내가 할 수있는 몇 가지 C# 코드를 표시 할 수 있습니다. 나는 VB.NET 동등 물을 찾아 볼 시간이 없다.

0

좋은 아키텍처를 따르고 싶다면 Model이나 ViewModel의 데이터를 채우기위한 논리를 작성해서는 안됩니다.

데이터를로드하려면 DataServiceAgent를 사용해야합니다. DataServiceAgent에 대한 자세한 정보는 link을 방문하십시오.

Service Agent는 데이터베이스 및 웹 서비스와 상호 작용하기 위해 응용 프로그램의 맨 위에 하나 이상의 계층을 추가합니다.

+0

DB가 아닌 내 모델을 쿼리하기 위해 linq을 작성해야하는지 묻고있었습니다. – Yatrix

+0

@ Yatrix : 네가 그랬지만, 그는 옳았다. 그는 추천으로 표현할 수는 있지만, 필요한 경우 기본 DataProvider를 변경할 수 있도록로드 논리를 분리하는 것이 좋습니다. 자네가 말했 잖니, 너 패턴을 새롭게 느낀다. 두 제품을 함께 사용하면 어떨까요? ;영형) – DHN

0

DataAccess Layer를 Presentation Layer와 혼합합니다. 그렇습니다. 그것은 반 패턴입니다.

0

나를 위해. ViewModel과 Model은 동일합니다. Model 레이어는 여러분을 비춰줍니다. View ... 그럼 Model보다는 ViewModel을 사용해야하는 이유는 무엇입니까? 그냥 명명 충돌입니다.

관련 문제