Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 模型在“传统”C/SQLite MVVM应用程序中的角色_C#_Sqlite_Mvvm_Viewmodel - Fatal编程技术网

C# 模型在“传统”C/SQLite MVVM应用程序中的角色

C# 模型在“传统”C/SQLite MVVM应用程序中的角色,c#,sqlite,mvvm,viewmodel,C#,Sqlite,Mvvm,Viewmodel,根据年的一个回复,我担心在我学习这些东西的过程中,我错过了MVVM的一个基本原则。我得到了有关视图绑定到视图模型、通知等更简单的东西。底层技术方面对我来说很有意义。不太清楚的是viewmodel和模型之间的边界在哪里 我正在努力构建一个通用的all,目前我的重点是Windows Phone部分。我将使用SQLite来持久化和检索数据。这个简单的方面就是我不清楚的地方 我假设我编写的类将形成模型,这些类将负责从SQLite检索数据。viewmodel将绑定到模型类上的属性,而视图将绑定到视图中的属

根据年的一个回复,我担心在我学习这些东西的过程中,我错过了MVVM的一个基本原则。我得到了有关视图绑定到视图模型、通知等更简单的东西。底层技术方面对我来说很有意义。不太清楚的是viewmodel和模型之间的边界在哪里

我正在努力构建一个通用的all,目前我的重点是Windows Phone部分。我将使用SQLite来持久化和检索数据。这个简单的方面就是我不清楚的地方

我假设我编写的类将形成模型,这些类将负责从SQLite检索数据。viewmodel将绑定到模型类上的属性,而视图将绑定到视图中的属性。作为这一切的一部分,我假设所有与SQLite的交互都在我的模型中

现在,根据另一个帖子中的评论,我恐怕我错了。声明是viewmodel将负责加载模型。它(而不是模型)可能会直接与SQLite交互

好吧,这给我的理解带来了麻烦,现在我想知道我是否一直错过了树木:在我的简单应用程序中,模型层是什么?SQLite本身可以被视为模型,viewmodel直接与SQLite交互。如果是这样,我可能编写的模型类的角色是什么?如果我的需求是简单的SQLite CRUD,那么我需要模型层的类

虽然我知道没有一个正确的方法来设计这样的应用程序,但我想确保我遵循基本的、公认的原则。考虑到这一点,在一个简单的MVVM/SQLite应用程序中,后面的模型到底是什么


感谢

一般来说,模型是在数据进入客户端时包含数据的一组类。它可以是实体框架模型或经典数据集或记录集。它甚至可以是包含JSON或其他格式的字符串

一般来说,我接受由数据源指定的模型。我按原样使用它,当它因数据源规范化、协议更改、新版本的更改而更改时,我会在ViewModel中调整从模型到ViewModel的转换


因此,数据源中的更改只会影响ViewModel中的模型和转换逻辑。ViewModel的界面和视图应该尽可能稳定,因为它们应该由用户需求驱动。当然,除非模型中的更改也提供了视图中的新功能,否则视图模型和视图需要更改以显示新数据。

您能用您提到的线程链接更新问题吗?@venerik-再次感谢您,Erno。这是有道理的。我试图在视图、视图模型和模型的良好理论设计与允许我快速高效地开发应用程序的实用方法之间取得平衡,同时也允许我在未来以合乎逻辑的方式进行更改。这里一个重要的因素是,我正在努力建立一个非常好的团队!简单的应用程序。企业应用程序不会扩展、适应各种部署和设计更改等。这仅仅是一个带有本地数据库SQLite的Windows Phone应用程序。因此,我的目标是在使用MVVM的同时,对关注点隔离等理论保持务实态度。考虑到这一点,一个更具体的问题。对于一个简单的应用程序,它访问本地SQLite实例中的所有数据,将SQLite作为模型是合理的吗?即,VIEW模型通过SQLite API创建数据库,通过Qualasyc查询数据等等。我真的需要在VIEW模型和SQLite之间的模型层中设置一组类吗?用SQLite作为模型,我仍然可以在视图和VIEW模型之间进行稳定的契约,视图模型处理转换等等。我会考虑SQLite数据源,而不是模型。odel将是我从API获得的用于从SQLite检索数据的任何数据结构。不要太担心它。没有人会强迫你需要任何东西。MVVM只是一种模式。根据需要使用它。拥有模型类可以让您更容易地在数据源之间切换,例如,切换到单元测试。再次感谢您,Erno。这对我来说是一个有趣的,坦率地说,有趣的调查,因为我试图找到平衡。我决定不使用明显的模型层,这与您所暗示的不被MVVM的纯洁性所束缚是一致的。请记住,这不是一个企业应用程序,甚至不是一个特别复杂的应用程序,我让viewmodel直接与SQLite交互。我理解这与概念上的不一致,但我发现自己复制了viewmodel和模型类中的示例项表示。