【问题标题】:Entity Framework / Azure Web Service model design实体框架/Azure Web 服务模型设计
【发布时间】:2014-02-03 08:24:14
【问题描述】:

我正在做一些原型设计,并且有一个小型数据库(4 个相关表),我围绕它开发了一个 Entity Framework 6 项目(带有表模型的 DLL)。我已将 ASP.NET MVC 4 Web 应用程序添加到解决方案中,该解决方案包括模型文件夹下的存储库接口/实现。存储库添加了针对 EF 项目的 CRUD 操作的接口。 Web App 有一组通过存储库提供 REST 接口的控制器。我相信标准的东西。

我遇到的问题是我想创建一个聚合类,它包含 EF 中定义的包装器类型(模型),并返回该聚合以响应 Get 请求。问题是我在哪里定义这个聚合对象?英孚项目? (如何?)。一个独立的类库(可供客户使用)?网络应用?

尝试将所有模型定义保存在客户端和 Web 应用服务可以同时理解的相同位置。

谢谢

【问题讨论】:

    标签: c# asp.net-mvc entity-framework azure


    【解决方案1】:

    我相信您在这里想要的是 DTO(数据传输对象)模式。有关该模式的基本说明,请参阅 herehere。这个想法是你定义了一组不同于你的数据访问对象的类(在你的例子中是 EF 类),其目的是在你的 REST 接口和它的客户端之间中继数据。如果您有 C# 客户端,为了简单起见,您想让类定义可见,那么我建议将 DTO 类定义放在他们自己的类库项目中,并让服务器和客户端都引用该 dll。

    【讨论】:

    • 好吧。使用基于类的模型在客户端和 Web 服务之间交换数据。真正的问题是这些模型应该放在哪里,以便它们可以在客户端、EF 和服务之间共享,这样就不会有很多冗余代码。
    • 正如我在上一句中所说,我会将它们放在自己的 dll 中,并从客户端和服务器项目中引用它。为了在我们的项目中扩展这种情况,我们经常将这些共享的 dll 放入我们从私有 nuget 服务器提供的版本化 Nuget 包中。
    • 我明白了,这是有道理的。这仍然给我留下了 EF 项目中包含的模型。您是否以这种方式将 EF 用于您的项目?模型如何保持同步?
    • 是的,使用 EF 作为存储库接口背后的 DAL 是我们在某些项目中使用的模式。关于 EF 类所在位置的决定通常由谁使用它来决定。它通常从第一次使用它的项目开始。如果没有其他项目需要相同的 DAL,它就会留在那里。一旦第二个项目需要它,我们就会将其重构为一个通用包。
    • 再次感谢您提供的非常有帮助的信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多