【问题标题】:Repositories calling existing stored procedures调用现有存储过程的存储库
【发布时间】:2015-08-14 12:07:49
【问题描述】:

假设我正在开发一些 ASP.NET MVC 应用程序,它通过存储过程处理现有数据库中的数据,没有也永远不会 linq 到实体或其他任何东西。该数据库包含许多模式,我所有的 Web 应用程序也需要不同的模式。

这是我的观点:

  • 我的解决方案中有一个 x.Model 项目,其中包含我的 ADO.NET 实体模型,用于为现有数据库中的所有存储过程创建返回类型。
  • 我的解决方案中有 x.Repository.y 项目,其中 y 是数据库中的模式名称。这些项目包含具有通过 ADO.NET 实体模型的上下文从适当架构调用存储过程的功能的类。所以我必须在这些存储库项目中引用 x.Model。
  • 我有 ASP.NET MVC 项目,这些项目使用来自 x.Repository.y 项目的必要注入存储库。我在视图中使用其中一些返回类型的存储过程作为模型,因此我也需要对 x.Model 项目的引用。但在这种情况下,此参考为客户端 Web 应用程序提供了所有上下文。我不希望在我的 Web 应用程序中可以访问我的全部或部分数据库实体。我只是想让他们知道必要的存储库类。

有可能吗?我该怎么做?

如果我删除 x.Model 项目并在我的 x.Repository.y 项目中创建仅包含适当架构存储过程的 ADO.NET 实体模型,则引用 Web 应用程序再次知道此架构的整个数据库实体。

提前致谢,

【问题讨论】:

    标签: asp.net-mvc entity-framework stored-procedures architecture repository-pattern


    【解决方案1】:

    也许,使用Model First or Code First approach 的更好方法。因此,您可以描述纯(不引用 DbContext 和其他 Data 类)实体。然后,在 x.Repository 项目中创建映射。并将您的模型引用到 ASP.NET MVC 站点。因此,您将只有实体和存储库,但映射和 DbContext 将隐藏在一个引用中(您可以将 mapping classes 标记为 internal)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多