Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVVM中的数据库模型_C#_Database_Sqlite_Mvvm - Fatal编程技术网

C# MVVM中的数据库模型

C# MVVM中的数据库模型,c#,database,sqlite,mvvm,C#,Database,Sqlite,Mvvm,您好,我正在尝试学习MVVM,我对某些部分不太确定,主要是(数据)模型需要与VM(视图模型)通信的部分 所以我得到了一个类person,它有很多属性(带有Raiseproperty(INotifyPropertyChanged))。现在,我如何将该类连接到VM,我将创建一个新类,并将其命名为ViewModelPerson,但我主要想要一个人员列表,因为仅显示一个人是没有用的,该列表将通过Dapper从数据库(SQLite)中收集。现在我需要在viewmodel或(数据)模型中的何处创建可观察列表

您好,我正在尝试学习MVVM,我对某些部分不太确定,主要是(数据)模型需要与VM(视图模型)通信的部分

所以我得到了一个类person,它有很多属性(带有Raiseproperty(INotifyPropertyChanged))。现在,我如何将该类连接到VM,我将创建一个新类,并将其命名为ViewModelPerson,但我主要想要一个人员列表,因为仅显示一个人是没有用的,该列表将通过Dapper从数据库(SQLite)中收集。现在我需要在viewmodel或(数据)模型中的何处创建可观察列表?我认为是在ViewModel中,因为我需要将其绑定到视图,但是我应该从哪里将数据库信息插入ViewModel ObservableCollection?我是否将其放在类似ViewModelPersonsList的构造函数中,该构造函数有一个查询来从SQlite DB收集所有人员并将其插入列表中

希望你能理解我没有理解MVVM模型的地方,如果有不清楚的地方,请提问,我会尽量更好地解释我的问题


Maxim

视图->视图模型->业务逻辑->数据层->数据库

视图->视图模型->WCF/Web服务->业务逻辑->数据层->数据库

如果视图模型需要Person对象列表,那么它应该调用业务逻辑层,而BLL将围绕调用数据层实现必要的逻辑。BLL返回列表,VM通过绑定将其提供给视图


更新个人对象的工作方式相同。VM只是用更新的对象调用BLL。

因为我看到你提到了Sqlite,我想你说的是小型WPF项目

我建议您将实体框架代码优先模型映射到数据库(read)

如果您想使用SQLServerCompactEdition,您甚至可以拥有数据库(这也可以通过Sqlite实现,但需要付出更多的努力)

无论如何,然后使用生成的(或编码的)
DbContext
作为对象

您可以选择通过DAL单独处理数据,或直接从ViewModel处理数据

在任何情况下,我都会说创建两个ViewModel基类,一个公开TEntity,另一个公开TEntity集合。
如果您选择在VM中执行DAL操作,您可以将CRUD方法添加到基本CollectionViewModel中,然后手动调用,或者让用户通过公开命令来调用它。

我的回答对您有帮助吗?