我正在关注将MVVM架构与WPF应用程序集成的this课程,但首先使用代码。对于我自己的应用程序,我首先使用数据库,只有一个 几张桌子。
这是我的项目结构,包含3层Model-View-ViewModel。在课程中,他创建了两个模型类,当然首先在模型项目中使用代码,而数据访问项目则处理迁移和DbContext。
现在,当我使用Database First时,EF会为我创建所有模型类,但也包含数据库上下文。我的edmx结构如下:
我的问题是我需要在哪个项目中放置什么?我知道我在UI项目中有我的视图模型,然后使用数据服务创建新的上下文,但似乎我可以在UI项目中完成所有这些。
答案 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的单独文件夹和一些其他文件夹,用于辅助类等。