C# 在多个项目中使用相同的数据库生成EF实体

C# 在多个项目中使用相同的数据库生成EF实体,c#,wpf,entity-framework,C#,Wpf,Entity Framework,我正在尝试将我的C#WPF应用程序的数据库部分分离开来,这样我就可以在多个项目中使用它,但如果不在某个地方重复代码,我就无法找到如何做到这一点 当前状态: Windows桌面WPF应用程序,单个解决方案中的单个项目 项目在NuGet中安装了EntityFramework 6.3包 在同一台笔记本电脑上运行的SQL Server Express 数据库直接在SSMS中设计,通过以下过程逆向工程到POCOs:Add->New Item->Data->ADO.NET实体数据模型->首先从数据库编码-

我正在尝试将我的C#WPF应用程序的数据库部分分离开来,这样我就可以在多个项目中使用它,但如果不在某个地方重复代码,我就无法找到如何做到这一点

当前状态:

  • Windows桌面WPF应用程序,单个解决方案中的单个项目
  • 项目在NuGet中安装了EntityFramework 6.3包
  • 在同一台笔记本电脑上运行的SQL Server Express
  • 数据库直接在
    SSMS
    中设计,通过以下过程逆向工程到
    POCOs
    Add->New Item->Data->ADO.NET实体数据模型->首先从数据库编码->选择连接字符串->选择数据库对象
    。这将创建一个
    .edmx
    文件,该文件下面还有一些其他文件,包括一个
    .tt
    文件,我可以展开该文件以查看所有实体
  • 在极少数情况下,当我需要更改数据库时,我会在
    SSMS
    中进行更改,然后再次按照上述过程更新应用程序中的对象
这个应用程序运行良好。但是我想分离数据库,这样它就可以在另一台机器上运行,无论是在我家里还是在云中,这样我就可以编写基于web或移动的客户端,从另一个位置使用相同的数据库。但是,我不知道如何在不引入其他问题的情况下从WPF应用程序中删除数据库部分

我设想这样一种情况:数据库运行在一台机器上,上面有一个restfulweb服务,原始应用程序被修改为访问web服务,而不是直接访问数据库

因此,也许web服务项目本身就是我使用EF6访问数据库并将其反向工程为实体的地方,这样我就可以通过web服务接收实体并在数据库中插入/更新它们。这是有道理的

在这种情况下,原始WPF应用程序将不再需要安装EF6、任何连接字符串或任何与数据库相关的内容,但它仍然需要了解从数据库生成的所有实体,因为它仍然需要创建这些对象,以便在调用web服务时发送它们


那么,我是否从项目中的数据库创建
实体
,然后将相同的
实体
复制到另一个项目中?这感觉像是在复制代码。如果我更改了数据库,我必须在每个项目中分别更新
实体。或者我是否制作了一个
“entities”
项目,通过
“using”
指令从其他两个项目中访问该项目?或者制作一个类库
.dll
?我认为后者中的一个会起作用,但我有点不知道如何处理这个问题。或者这需要更深入的重新思考?

如果我理解正确

您可以在一个单独的类库中创建模型引用,并将该库用作WPF中的引用或任何您想要的地方,但请记住,连接将发生在程序像wpfApp或webapi一样运行的地方,因此您必须将所有配置设置放在“入口点”中.

或者制作一个类库——当然!但这个问题非常广泛。你能用(暂定)代码把它归结为一个编程问题吗?