C# 在WPF应用程序中使用MVVM构造数据库第一模型类

C# 在WPF应用程序中使用MVVM构造数据库第一模型类,c#,sql,wpf,entity-framework,mvvm,C#,Sql,Wpf,Entity Framework,Mvvm,我将学习如何将MVVM体系结构与WPF应用程序集成,但首先要使用代码。对于我自己的应用程序,我首先使用数据库,只有一个 几张桌子 这是我的项目结构,有3层,模型视图模型。在本课程中,他创建了两个模型类,当然首先在模型项目中使用代码,而数据访问项目处理迁移和DbContext 现在,当我首先使用数据库时,EF为我创建了所有模型类,但也包括了数据库上下文。我的edmx的结构如下: 我的问题是我需要在哪个项目中放置什么?我知道我在UI项目中有我的视图模型,然后使用数据服务创建一个新的上下文,但似乎

我将学习如何将MVVM体系结构与WPF应用程序集成,但首先要使用代码。对于我自己的应用程序,我首先使用数据库,只有一个 几张桌子

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

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


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

就我个人而言,我会在同一个项目中保留所有内容,每个不同的区域用名称空间(文件夹)隔开


在我自己的项目中,我有一个用于视图和ViewModels的UI文件夹,然后是一个单独的用于模型的文件夹,还有一堆其他文件夹用于诸如helper类之类的内容。

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

在我自己的项目中,我有一个用于视图和ViewModels的UI文件夹,然后是一个单独的用于模型的文件夹,以及一系列其他文件夹,例如帮助器类

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

实体类位于模型项目中,
DbContext
属于数据访问层

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

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

  • 回到Visual Studio,通过单击解决方案资源管理器顶部的“显示所有文件”图标,然后右键单击
    Nolek.tt
    文件,并选择“包含在项目中”选项,将
    Nolek.tt
    文件包含在模型项目中

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

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

const string inputFile = @"../NolekWPF.DataAccess/Nolek.edmx";
保存文件后,应在模型项目中生成实体类

有关更多信息,请参阅以下博文:

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

实体类位于模型项目中,
DbContext
属于数据访问层

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

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

  • 回到Visual Studio,通过单击解决方案资源管理器顶部的“显示所有文件”图标,然后右键单击
    Nolek.tt
    文件,并选择“包含在项目中”选项,将
    Nolek.tt
    文件包含在模型项目中

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

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

const string inputFile = @"../NolekWPF.DataAccess/Nolek.edmx";
保存文件后,应在模型项目中生成实体类


有关详细信息,请参阅以下博文:

是的,但是使用名称空间而不是程序集会使违反设计的行为不被注意。是的,但是使用名称空间而不是程序集会使违反设计的行为不被注意。非常感谢!顺便说一句,你链接的博客只是链接回这篇文章。非常感谢!顺便说一下,你链接的博客只是链接回这篇文章。