首先,在经过这么长时间的斗争之后,我无法理解MVVM模式的本质,我感到很惭愧,我不禁要问。
我搜索并搜索了MVVM,但是(我似乎)清楚的层只是View和ViewModel层。
所以这是我到目前为止所掌握的一些小例子,仅供我使用MySQL查询来获取我的数据:
模型
我不清楚在这做什么。我有这类Employee.cs:
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
}
我的问题:我应该在EmployeeModel类中从MySQL数据库中获取数据吗?我读到了这个answer数据访问层与MVVM模型不同的东西,而且我可以使用存储库从我的数据访问层请求一个Employees列表。
基于该答案,它应该是:
对于一页员工名单的所有这些,我做错了吗?
很抱歉这个问题很长,如果我说错了,我会非常乐意解决这个问题。
此刻我真的很无能,所以非常感谢任何新鲜的观点。
干杯!
答案 0 :(得分:5)
好的,我们来看看:
Repository
类,其中包含适用于所有数据模型的通用CRUD方法。然后你最终得到:
不是很糟糕,是吗? :)
不要过度思考它,也不要过度使用你的解决方案。在一个简单的应用程序中有300个不同的间接层是毫无意义的IMO。如果应用程序增长,您可以随意开发它们,并且需要单独的层。
[编辑]当然,我假设“模型”类同时是一个实体类;随着任何一种ORM,即使是轻量级的ORM(Dapper会让人想到)。
答案 1 :(得分:1)
嗯,你基本上把它覆盖了。通常我会将N层模型与MVVM一起使用,因此在您的情况下它将是:
还有一个DOMAIN图层将包含person类。你可以在所有属性上使用NotifyPropertyChanged。
我同意这是很多文件,但它们有目的。当您想要更改图层(例如从MySQL移动到MSSQL)时,它们用于更好的可维护性,关注点的良好分离和灵活性。
例如,使用OR映射器也可以生成很多管道。
答案 2 :(得分:0)
文件
样品:
EmployeeListVM
构造函数被称为Repository
getAllEmployee()
获得List<EmployeeVM>
现在它将其改为ListVM属性“ItemList”
现在您只需要显示您的视图并将EmployeeListV.Datacontext
和EmployeeListVM