在WPF App中使用MVVM构建数据库的第一个模型类

时间:2017-11-15 13:58:21

标签: c# sql wpf entity-framework mvvm

我正在关注将MVVM架构与WPF应用程序集成的this课程,但首先使用代码。对于我自己的应用程序,我首先使用数据库,只有一个 几张桌子。

这是我的项目结构,包含3层Model-View-ViewModel。在课程中,他创建了两个模型类,当然首先在模型项目中使用代码,而数据访问项目则处理迁移和DbContext。

enter image description here

现在,当我使用Database First时,EF会为我创建所有模型类,但也包含数据库上下文。我的edmx结构如下:

enter image description here

我的问题是我需要在哪个项目中放置什么?我知道我在UI项目中有我的视图模型,然后使用数据服务创建新的上下文,但似乎我可以在UI项目中完成所有这些。

2 个答案:

答案 0 :(得分:2)

  

我的问题是我需要在哪个项目中放置什么?

实体类进入模型项目,DbContext属于数据访问层。

您应该可以通过执行以下操作将Nolek.tt文件移动到模型项目中。

  • 打开文件资源管理器(右键单击Visual Studio中的解决方案,然后选择“在文件资源管理器中打开文件夹”选项)并将Nolek.tt文件移动到模型项目文件夹。

  • 返回Visual Studio,通过单击Solution Explorer顶部的“Show All Files”图标,在模型项目中包含Nolek.tt文件,然后右键单击{{1文件并选择“包含在项目中”选项。

  • 从DAL项目中删除Nolek.tt文件。

要使模型项目中的模板能够找到模型,您需要将其修改为指向正确的EDMX路径。您可以通过在Nolek.tt模板文件中设置inputFile变量来指向显示模型的显式路径来执行此操作:

Nolek.tt

保存文件后,应在模型项目中生成实体类。

有关详细信息,请参阅以下博客文章:https://blog.magnusmontin.net/2013/05/30/generic-dal-using-entity-framework/

答案 1 :(得分:0)

就个人而言,我会将所有内容保存在同一个项目中,并按名称空间(文件夹)分隔每个不同的区域。

在我自己的项目中,我有一个用于Views和ViewModels的UI文件夹,然后是一个用于Models的单独文件夹和一些其他文件夹,用于辅助类等。