我使用Linq-to-SQL来创建我的模型。我有一个电影表,列出了所有用户'最喜欢的电影。
在我的虚拟机中,我可以访问当前用户。我想打电话给我的linq实体来获取所有用户喜爱的电影。将实际的linq查询直接在我的VM中的方法中用于电影表是不是很糟糕?
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)
函数吗?
我对模式很陌生。我知道模式更像是一个指南,但是在我出现这种情况之前我做出这些决定之前我想要正确地遵循它。
答案 0 :(得分:1)
视图模型用于表示您的数据,例如在视图上(在ASP.NET MVC中)。
例如,假设您有一个必须显示用户数据的视图。您将从服务或存储库调用(到数据库)按ID返回User对象。然后,您将此User对象映射到视图模型。然后,您将此视图模型返回到视图,视图将使用它将用户的数据显示给客户端。
如果可以,那么我可以向您展示一些C#代码。我没时间去查看VB.NET等价物。
答案 1 :(得分:0)
如果你想要遵循良好的架构,你既不应该编写任何用于在Model和ViewModel中填充数据库的逻辑。
您应该使用DataServiceAgent来加载数据。有关DataServiceAgent的更多信息,请访问此link。
Service Agent在应用程序的顶部引入了一个层,以与数据库和Web服务进行交互。
答案 2 :(得分:0)
您正在将DataAccess图层与表示层混合使用。所以是的,它是反模式的。
答案 3 :(得分:0)
对我来说。 ViewModel和Model是一样的。 Model层是你的镜像View ...那么为什么要使用ViewModel而不是Model?这只是一个命名冲突