Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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# EF生成类&;MVVM项目_C#_Wpf_Entity Framework_Mvvm - Fatal编程技术网

C# EF生成类&;MVVM项目

C# EF生成类&;MVVM项目,c#,wpf,entity-framework,mvvm,C#,Wpf,Entity Framework,Mvvm,我开始了一个项目,试图尊重MVVM模式并使用实体框架,但是对于不同的组织层,我有点困惑 这里是我当前关心的问题:EF根据我的数据库结构生成POCO类。 如果我理解的话,这些应该是我的榜样。 与数据库的交互被排除在基本MVVM模式之外(它们属于一个额外的层——我所看到的通常称为数据层) 然而,这些POCO类没有实现INotifyPropertyChanged,这是我目前看到/了解的少数MVVM中的一个关键点,因为它允许绑定工作 关于这件事,我浏览了一些链接,但我读到的大多数不同的答案只是让我的头脑

我开始了一个项目,试图尊重MVVM模式并使用实体框架,但是对于不同的组织层,我有点困惑

这里是我当前关心的问题:EF根据我的数据库结构生成POCO类。 如果我理解的话,这些应该是我的榜样。 与数据库的交互被排除在基本MVVM模式之外(它们属于一个额外的层——我所看到的通常称为数据层)

然而,这些POCO类没有实现INotifyPropertyChanged,这是我目前看到/了解的少数MVVM中的一个关键点,因为它允许绑定工作

关于这件事,我浏览了一些链接,但我读到的大多数不同的答案只是让我的头脑越来越糊涂

归结到一个更简洁的问题:为了完成生成的POCO类并实现INotifyPropertyChanged,理想的解决方案是什么

  • 考虑将POCO生成的类作为额外层的一部分,在其周围创建一个包装器作为正式模型
  • 创建第二个部分类来完成POCO类
  • EF在实现此接口时是否生成类?(老实说,我现在不想这样,至少在我学习的时候。不过以后可能会很有趣)
  • 我也读过一些框架,但仍在学习基础知识,我宁愿自己努力一点,现在不添加工具,这可能会让我的头脑更加混乱,而不是此刻的帮助
  • 还有别的吗

谢谢。

就我个人而言,我会创建ViewModel对象,它公开用户界面感兴趣的POCO对象的元素——这似乎是相当多的重复,但它将用户界面与底层业务/数据对象分离开来

嘿,谢谢你的回复。因此,如果我理解正确,ViewModel对象会将模型实例化为私有属性,并且在实现INotifyPropertyChanged时只允许访问/修改视图所需的属性?某种程度上,在我使用这种方法的情况下,ViewModel通常会在其构造函数中传递一个模型,但是是的,UI绑定到它可以更改的给定属性,仅此而已。老实说,将Name、姓氏、DOB作为Name、姓氏、DOB公开可能会很乏味,但它保持了UI绑定和底层模型之间的分离,因此有点道理……好吧,非常感谢。我将暂时不回答这个问题,等待最终的其他选项。酷-我所能说的是,将MVVM层放入其中的额外努力似乎是一个真正的痛苦,但最终会得到一个非常干净的体系结构。祝你好运:)事实上,我还有一个关于集合的方法的最后一个问题:对于如何在这些条件下使用ObservableCollection,我有点困惑。如果我的数据库返回了一个列表,我应该如何继续获取我的ObservableCollection?我是否应该将列表中的每个POCO_对象重新实例化为作为参数传递的包装器对象,然后将创建的包装器对象添加到我希望获得的ObservableCollection中?哪一层会包含这样的过程?(这可能有点离题,很抱歉)进入T4文件并在那里更新它们,然后保留这些T4文件以备新项目使用。这样,您就可以保持POCO的干净,围绕POCO创建标准积垢,用于数据交互、有效性检查、MVVM等。。。