0

我在我的 WPF 桌面应用程序(NS:MyCompany.MyProduct)中使用 EntityFramework 4。

现在我想在 ASP.NET (NS: MyCompany.MyProduct2) 中创建相同的应用程序,具有完全相同的功能......因此我需要使用与 WPF 应用程序完全相同的数据库。

此外,我想在我的主 WPF 项目之上创建一个新的可执行文件(因此是一个新的 wpf 项目),它也使用与 WPF / ASP.NET-Application 相同的 ConnectionString 来显示一些报告。

所以我发现我需要共享 .edmx-Model (NS: MyCompany.MyProduct.Models. DBModel.edmx ) 和已经在 WPF 应用程序的 app.config 或 web.config 中持久存在的 ConnectionString ASP.NET 应用程序。

最好或推荐的方法是什么?

4

3 回答 3

1

最好或推荐的方法是什么?

创建一个类库项目并将 EF 模型放入其中并在您的 WPF/Web 项目之间共享它。库项目的 app.config 文件不会被父项目拾取,因此您必须手动更新 web.config 文件以添加该ConnectionString部分。

这种方法允许您在 WPF 应用程序和 Web 应用程序之间共享业务逻辑。如果它们本质上是相同的应用程序但在不同的平台上,那么您应该只重新实现 UI - 这是 MVC 模式的主要优势之一。

于 2012-08-27T13:29:44.017 回答
1

在这里同意@James。不要害怕将库项目添加到您的解决方案中。因此,您将拥有一个名为 MyCompany.Model 的项目,其中包含您的 EDMX。(实际上,您稍后可能会发现您想使用 T4 生成将您的模型从 DbContext 或 ObjectContext 中分离出来,但这是另一个讨论。)

使用 Visual Studio,您实际上可以将一个项目(您的 EDMX 项目)添加到多个解决方案中。不过,在编辑一个解决方案会破坏另一个解决方案时,请注意不要对 EDMX 项目进行更改。

恕我直言,您可能会发现在这里使用 GAC 并不理想,尤其是当您的 EDMX 仍在发展时。

至于连接字符串,这些是您往往不会在项目之间共享的一件事。通常,它们位于可执行项目的 app.config(或 web.config)中。这可能是一个问题,因为如果您使用库项目来保存 EDMX,EF 将自动在库项目中创建一个 app.config,其中包含连接字符串。但是 .NET从不将 app.config 用于 DLL。它存在的唯一原因是为您提供一些可以复制/粘贴到可执行 (WPF) app.config 或 web.config 的真实 app.config 中的内容。

于 2012-08-27T13:57:44.860 回答
0

如果您的目标是在一台机器上的所有三个应用程序之间共享单个 .edmx dll,实现此目的的最佳方法是签署 dll,然后将其添加到 GAC。如果 dll 将保留在不同的服务器上,则无需对 dll 进行 GAC,您可以在项目中引用它,并在相应的 .configs 中添加连接字符串条目。

GAC: http: //msdn.microsoft.com/en-us/library/yf1d93sz (v=vs.100).aspx

将 DLL 安装到 GAC:http: //msdn.microsoft.com/en-us/library/dkkx7f79.aspx

于 2012-08-27T13:27:35.027 回答