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

我正在尝试分离我的 C#WPF应用程序的数据库部分,以便可以在多个项目中使用它,但是我不知道如何在不重复代码的情况下做到这一点。

当前状态:

  • Windows桌面WPF应用程序,单个解决方案中的单个项目
  • 项目在NuGet中安装了 EntityFramework 6.3 程序包
  • 在同一台笔记本电脑上运行的
  • SQL Server Express
  • 直接在SSMS中设计数据库,并通过以下过程将其反向工程为POCOsAdd -> New Item -> Data -> ADO.NET Entity Data Model -> Code First from Database -> Choose connection string -> Choose database objects。这会创建一个.edmx文件及其下面的一些其他文件,其中包括一个.tt文件,我可以对其进行扩展以查看所有实体
  • 在极少数需要更改数据库的情况下,我会在SSMS中进行操作,然后再次按照上述过程来更新应用程序中的对象

此应用程序运行良好。但是我想分离数据库,以便它可以在我的房子或云中的另一台计算机上运行,​​以便我可以编写从另一个位置使用同一数据库的基于Web或移动的客户端。但是,我不知道如何在不引入其他问题的情况下从WPF应用程序中仅删除数据库部分。

我想象这样一种情况:数据库运行在具有 RESTful Web服务的计算机上,并且原始应用程序被修改为直接访问Web服务而不是直接访问DB。 / p>

所以也许Web服务项目本身就是我使用 EF6 来访问数据库并将其反向工程为实体的地方,所以我可以通过Web服务接收实体并将其插入/更新到数据库。那是有道理的。

在这种情况下,原始WPF应用程序将不再需要安装EF6或任何连接字符串或与数据库相关的任何东西,但仍将需要知道从数据库生成的所有实体,因为调用Web服务时,仍将不得不创建那些对象来发送它们。

那么我是否要从一个项目的数据库中创建entities,然后将相同的entities复制到另一个项目中?感觉就像在复制代码。如果更改了数据库,则必须在每个项目中分别更新entities。还是我创建一个"entities"项目,我可以使用"using"指令从彼此访问?还是建立一个类库.dll?我认为后者可以使用,但是我对如何解决这个问题有些迷惑。也许这需要更深入的思考?

lxy147258 回答:在多个项目中使用相同的数据库生成的EF实体

如果我正确理解...

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

本文链接:https://www.f2er.com/3148212.html

大家都在问