3

我正在编写一个使用 prism 框架的应用程序 (WPF)。我有一个使用 shellview 的客户。我有一些模块。所以这是不同的项目。每个模块都是一个单独的项目。这些模块由 Unity 加载。

我有以下

Solution
 Client
    Modules
    Client ( app )

 Common
    Entities

 Server
    Data
    Web

所以你可以看到我在服务器文件夹下有一个数据项目。在那里你可以找到 edmx。Web 项目是空的,实体项目也是空的。

客户端(应用程序)有一个带有引导程序的 shellview。客户端工作。只有数据访问层必须集成。

进行数据访问的最佳解决方案是什么?WCF,还有别的吗?我们需要为实体使用什么模板。我们如何在所有代码(View/ViewModel)所在的模块中使用该服务?

Pff,我正在寻找和阅读这么多。在stackoverflow上找到了一些主题。但没有一个话题是从头开始的。希望可以有人帮帮我。

4

3 回答 3

0

我建议您在 .edmx 上生成 POCO 或 STE,并使用存储库模式进行数据库访问。创建一个单独的 WCF 服务项目并调用这些存储库。

您的 Prism 解决方案将有一个带有静态类的代理项目以返回服务对象,并且您的客户端 (Prism) 应用程序将调用 WCF 服务。

于 2012-04-18T13:15:57.343 回答
0

也许您可以查看 Calcium SDK (http://calcium.codeplex.com/),它利用 Prism 模块化应用程序开发以及对 WCF 服务的支持。

于 2012-04-20T03:23:55.807 回答
0

如果您熟悉服务器端的 WCF 和 EntityFramework,那么这是要走的路。

为了重用服务生成的代理类,您可以将服务引用保存在您从所有模块引用的公共程序集中。像“基础设施”这样的东西是一个很好的命名约定。

如果您的某个模块需要独特的功能,那么您将服务引用放在该项目上。

在 WPF clent 的情况下:首先使用实体​​框架代码并将模型类分离到单独的程序集中,以便您可以在主客户端和模块中重用它们。

在 silveright 客户端的情况下: 如果生成服务代理时重复的模型类和命名空间对您来说是一个问题,您可以检查 WCF RIA 服务。请始终记住,您可以使用 Visual Studio 项目文件属性中的 RIA Link 链接两个程序集,一个是 silverlight,一个是 .net。然后您选择的任何服务器端代码文件都可以在客户端上重用。无论您是否使用 WCF 服务,都可以在文件名中使用“共享”后缀(例如:enums.shared.cs)。你可以在这里这里找到更多

希望这有帮助。

于 2012-04-20T17:56:27.667 回答