The*_*ude 6 architecture wpf mvvm
我正在构建一个MVVM应用程序.我正在尝试构建我的应用程序,如下所示:
我不知道这种方法在MVVM中是否很常见.无论如何,ViewModel使用服务层来填充它正在包装的Model或ObservableCollection.为了利用它的服务,ViewModel有一个包含服务抽象的字段,如下所示:
IService service;
Run Code Online (Sandbox Code Playgroud)
因为我使用Linq查询数据库,所以我的实体名称与我的域名相同.为了让ViewModel不知道服务层/数据库实体,我需要服务层来返回域模型而不是Linq生成的数据库实体.我这样做是通过执行以下操作(我正在工作的一个例子):
ObservableCollection<ItemTypeViewModel> GetItemTypes()
{
DataContextLocalDB dc = new DataContextLocalDB();
ObservableCollection<ItemTypeViewModel> itemTypes = new ObservableCollection<ItemTypeViewModel>();
foreach (ItemType itemType in dc.ItemTypes)
{
Models.ItemType type = new Models.ItemType();
type.Name = itemType.Name;
type.Description = itemType.Description;
ItemTypeViewModel itemTypeViewModel = new ItemTypeViewModel(type);
itemTypes.Add(itemTypeViewModel);
}
}
Run Code Online (Sandbox Code Playgroud)
有几件事我不满/不确定:
谢谢 :-)
没有理由重新创建 Linq 为您创建的数据对象。只需将它们传递给 ViewModel 就可以了。看起来您必须在域和 ViewModel 之间创建解耦,但由于这些实体只包含属性而不包含逻辑,因此可以传递它们,而且编程起来也会更容易。
其他一切都是最新的。唯一的一件事是我不会使用 LinqToSql,而是使用 EntityFramework。看起来差不多,只是L2SQL被MS放弃了。
归档时间: |
|
查看次数: |
3428 次 |
最近记录: |