调用现有存储过程的存储库
Repositories calling existing stored procedures
假设我正在开发一些 ASP.NET MVC 应用程序,这些应用程序通过存储过程处理现有数据库中的数据,没有也从不 linq 到实体或其他任何东西。该数据库包含大量模式,我所有的 Web 应用程序也需要不同的模式。
这是我的观点:
- 我的解决方案中有一个 x.Model 项目,其中包含我的 ADO.NET 实体模型,用于为现有数据库中的所有存储过程创建 return 类型。
- 我的解决方案中有 x.Repository.y 个项目,其中 y 是数据库中的架构名称。这些项目包含 类 具有通过 ADO.NET 实体模型的上下文从适当模式调用存储过程的功能。所以我必须在这些存储库项目中引用 x.Model。
- 而且我有 ASP.NET 个 MVC 项目,这些项目使用来自 x.Repository.y 个项目的必要注入存储库。在我看来,我使用其中一些 return 类型的存储过程作为模型,因此我也需要参考 x.Model 项目。但在那种情况下,此引用为客户端 Web 应用程序提供了所有上下文。我不希望我的整个或部分数据库实体在我的 Web 应用程序中是可访问的。我只是想让他们知道必要的存储库 类。
可能吗?我该怎么做?
如果我删除 x.Model 项目并在我的 x.Repository.y 项目中创建仅包含适当模式存储过程的 ADO.NET 实体模型,那么引用 Web 应用程序再次知道该模式的整体数据库实体。
提前致谢,
也许,更好的方法是将 Model First or Code First approach. So, you can describe pure (without references to DbContext and other Data classes) entities. Then, create mapping in x.Repository project. And referene your Model to ASP.NET MVC site. So, you will have only entities and repositories but mapping and DbContext will be hidden inside one reference (you can mark mapping classes 用作 internal
)。
假设我正在开发一些 ASP.NET MVC 应用程序,这些应用程序通过存储过程处理现有数据库中的数据,没有也从不 linq 到实体或其他任何东西。该数据库包含大量模式,我所有的 Web 应用程序也需要不同的模式。
这是我的观点:
- 我的解决方案中有一个 x.Model 项目,其中包含我的 ADO.NET 实体模型,用于为现有数据库中的所有存储过程创建 return 类型。
- 我的解决方案中有 x.Repository.y 个项目,其中 y 是数据库中的架构名称。这些项目包含 类 具有通过 ADO.NET 实体模型的上下文从适当模式调用存储过程的功能。所以我必须在这些存储库项目中引用 x.Model。
- 而且我有 ASP.NET 个 MVC 项目,这些项目使用来自 x.Repository.y 个项目的必要注入存储库。在我看来,我使用其中一些 return 类型的存储过程作为模型,因此我也需要参考 x.Model 项目。但在那种情况下,此引用为客户端 Web 应用程序提供了所有上下文。我不希望我的整个或部分数据库实体在我的 Web 应用程序中是可访问的。我只是想让他们知道必要的存储库 类。
可能吗?我该怎么做?
如果我删除 x.Model 项目并在我的 x.Repository.y 项目中创建仅包含适当模式存储过程的 ADO.NET 实体模型,那么引用 Web 应用程序再次知道该模式的整体数据库实体。
提前致谢,
也许,更好的方法是将 Model First or Code First approach. So, you can describe pure (without references to DbContext and other Data classes) entities. Then, create mapping in x.Repository project. And referene your Model to ASP.NET MVC site. So, you will have only entities and repositories but mapping and DbContext will be hidden inside one reference (you can mark mapping classes 用作 internal
)。