0

我对 MVVM 和实体框架比较陌生。

到目前为止,我让我的实体模型实现了 INotifyPorpertyChanged 接口,然后在 WindowVM 类中,我使用从数据库加载的模型对象填充了 ObservableCollection,并使用 Linq 查询,并在 xaml 中将我的数据绑定到这个列表(或选定的项目)在 itemsource 设置为此集合的列表框上)。

但是我在几个网站和博客上读到这是一种不好的做法,因为我将我的模型直接暴露给视图,并且我必须使用与视图直接相关的逻辑来污染我的模型(例如将 IsSelected 属性设置为 [未映射])。

正如我所读到的,更好的方法是创建一个 ViewModel 类来扭曲模型类。

但是我应该如何将模型列表(由 linq 查询返回)转换为 modelVM-s 的集合?

4

1 回答 1

-1

@EdPlunkett 谢谢!我怎么没想到?(我现在感觉好傻)

只有轻微的修改:

Blahs = new ObservableCollection<BlahViewModel>(
                  blahModelQuery.Select(m => new BlahViewModel(m))
        );

这将引发 System.NotSupportedException:

“LINQ to Entities 仅支持无参数构造函数和初始化程序。”

Blahs = new ObservableCollection<BlahViewModel>(
                  blahModelQuery.Select(m => new BlahViewModel(){model = m})
        );
于 2019-03-02T07:11:32.833 回答