Edw*_*uay 6 wpf frameworks mvvm
我正在创建一个WPF/MVVM框架,它为模型类生成代码.
我打算为每个数据库表/ web服务(例如"Customers")提供两个模型类:
该单一模型类拥有其所有属性(名字,姓氏等),再加上它的所有方法,其意义为单一实例,例如保存(),删除(),CalculateSalary()等.
该复数模型类具有奇异的模型对象))的集合,加上同样的方法,因为你想还上一组奇异的对象执行,如保存(),删除(,CalculateSalary(,也特别的方法,如排序(),以及使某些组非常容易的方法,例如LoadAllGoldCustomers(),甚至LoadWithSql(string sql)等.
我之前已经完成了这样的框架(PHP),它非常容易编写和理解这样的代码:
Customers customers = new Customers("all");
customers.CalculateSalary();
Run Code Online (Sandbox Code Playgroud)
一对继承的类(Item和Items)从每个数据库表的单个和复数类中获取了大部分代码,这使得编程非常干净.
但是,我很少看到其他应用程序做这个奇异/复数模型类拆分.相反,每个数据库表几乎总是只有一个类,例如Customer,这个类有任何必要的复数方法,例如GetCustomers(string sql)等.
我刚刚在WPF Model-View-ViewModel Toolkit 0.1演练中注意到,他们让你的两个模型为他们的"Models"目录两个类:
这似乎是一个类似的概念,只是"复数"类被称为数据源.
所以现在我要创建另一个基于WPF/MVVM的框架,并且可以决定我想要如何构建模型类.我希望框架是:
我会从那些谁开发datalayers用于特别是使用WPF/MVVM /复合应用程序库和框架欣赏反馈什么样的特点你找到最好的工作,或者如果你有其他框架,如里昂证券,亚音速,等工作同样,任何经验或关于LINQ如何更改/简化构建数据层结构的想法.谢谢.
哇。如果没有时间坐下来与您交谈,这是一个很难回答的问题。但无论如何,这是一个缩短的版本。
首先,尝试将框架或该框架的任何特性从一种语言移植到另一种语言似乎可能是试图将方钉塞入圆孔中。虽然我不怀疑功能(例如客户和客户)可以移植,但我当然可以认为它们不应该被移植。坚持使用 customer.CalculateSalary 示例,您可以使用 .NET 并为 IEnumerable 创建一个扩展方法来执行相同的操作,从而消除对 Customers 类的需要。我知道您可能还有其他功能,但这只是一个例子。另一个示例是使用 LINQ 对 IEnumerable 进行排序。
其次,我个人发现,在对象内部使用持久性方法(例如 Save、Delete 等)在大型系统中效果不佳,尤其是在处理 WCF 时。在这些场景中,稍后使用某种类型的存储库似乎效果更好,这似乎也适合您在开发过程中切换到 Oracle 的情况。
我还想完全不同意你关于如何很好地融入 MVVM 的观点。对我来说,视图模型是模型和视图之间的粘合剂。视图模型不仅可能需要了解视图(因此,WPF 特定功能),而且希望它了解它。ICommand 是视图模型需要了解的关键接口,并且是 WPF-y 程序集之一(WindowsBase、PresentationCore、PresentationFramework,不记得是哪一个)。另外,INotifyPropertyChanged 对于数据绑定也至关重要,应该在所有视图模型中实现,并且与 WPF 无关(我认为来自 System.ComponentModel?)。
这是我的两分钱。再说一次,很难用简短的回答来解释你的问题。我建议先使用该模式一段时间,然后再为其构建框架。祝你好运!
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |