C# MVVM中的数据库模型
您好,我正在尝试学习MVVM,我对某些部分不太确定,主要是(数据)模型需要与VM(视图模型)通信的部分 所以我得到了一个类person,它有很多属性(带有Raiseproperty(INotifyPropertyChanged))。现在,我如何将该类连接到VM,我将创建一个新类,并将其命名为ViewModelPerson,但我主要想要一个人员列表,因为仅显示一个人是没有用的,该列表将通过Dapper从数据库(SQLite)中收集。现在我需要在viewmodel或(数据)模型中的何处创建可观察列表?我认为是在ViewModel中,因为我需要将其绑定到视图,但是我应该从哪里将数据库信息插入ViewModel ObservableCollection?我是否将其放在类似ViewModelPersonsList的构造函数中,该构造函数有一个查询来从SQlite DB收集所有人员并将其插入列表中 希望你能理解我没有理解MVVM模型的地方,如果有不清楚的地方,请提问,我会尽量更好地解释我的问题C# MVVM中的数据库模型,c#,database,sqlite,mvvm,C#,Database,Sqlite,Mvvm,您好,我正在尝试学习MVVM,我对某些部分不太确定,主要是(数据)模型需要与VM(视图模型)通信的部分 所以我得到了一个类person,它有很多属性(带有Raiseproperty(INotifyPropertyChanged))。现在,我如何将该类连接到VM,我将创建一个新类,并将其命名为ViewModelPerson,但我主要想要一个人员列表,因为仅显示一个人是没有用的,该列表将通过Dapper从数据库(SQLite)中收集。现在我需要在viewmodel或(数据)模型中的何处创建可观察列表
Maxim视图->视图模型->业务逻辑->数据层->数据库 或 视图->视图模型->WCF/Web服务->业务逻辑->数据层->数据库 如果视图模型需要Person对象列表,那么它应该调用业务逻辑层,而BLL将围绕调用数据层实现必要的逻辑。BLL返回列表,VM通过绑定将其提供给视图
更新个人对象的工作方式相同。VM只是用更新的对象调用BLL。因为我看到你提到了Sqlite,我想你说的是小型WPF项目 我建议您将实体框架代码优先模型映射到数据库(read) 如果您想使用SQLServerCompactEdition,您甚至可以拥有数据库(这也可以通过Sqlite实现,但需要付出更多的努力) 无论如何,然后使用生成的(或编码的)
DbContext
作为对象
您可以选择通过DAL单独处理数据,或直接从ViewModel处理数据
在任何情况下,我都会说创建两个ViewModel基类,一个公开TEntity,另一个公开TEntity集合。
如果您选择在VM中执行DAL操作,您可以将CRUD方法添加到基本CollectionViewModel中,然后手动调用,或者让用户通过公开命令来调用它。我的回答对您有帮助吗?