2013-06-25 69 views
0

我使用Linq-to-SQL創建我的模型。我有一個電影表,列出了所有用戶最喜歡的電影。從視圖模型反模式查詢模型?

在我的虛擬機中,我可以訪問當前用戶。我想打電話給我的linq實體以獲得所有用戶最喜歡的電影。直接在我的虛擬機的方法中對電影表進行實際的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對象。然後,您將此用戶對象映射到視圖模型。然後,您將此視圖模型返回到視圖,視圖將使用它將該用戶的數據顯示給客戶端。

如果我能那麼我可以告訴你一些C#代碼。我沒有時間去查看VB.NET的等價物。

0

如果您想遵循良好的體系結構,您不應該在Model或ViewModel中編寫任何填充數據庫數據的邏輯。

您應該使用DataServiceAgent加載數據。有關DataServiceAgent的更多信息請訪問link

服務代理在應用程序的頂部再引入一層來與數據庫和Web服務進行交互。

+0

我在問是否應該寫linq來查詢我的模型,而不是db。 – Yatrix

+0

@Yatrix:是的,但是他是對的,在某種程度上。他可以把它作爲推薦措辭,但是......加載的邏輯是分開的,這樣如果需要的話,你可以改變底層的'DataProvider'。你自己說過,你是新來的模式。爲什麼不使用它們,如果它們合在一起? ; O) – DHN

0

您正在將DataAccess Layer與Presentation Layer混合使用。所以是的,這是反模式。

0

對我來說。 ViewModel和Model是一樣的。模型圖層是你的一面鏡子View ...那麼爲什麼使用ViewModel而不是Model?這只是一個命名衝突