c# - 每个表一个存储库还是每个功能部分一个?

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

我将 ASP.NET MVC 2 和 C# 与 Entity Framework 4.0 结合使用,针对规范化的 SQL Server 数据库进行编码。我的数据库结构的一部分包含一个条目表,其中包含与包含驱动程序、汽车、引擎、底盘等的子表相关的外键。

我正在学习 Nerd Dinner 教程,该教程为晚餐设置了一个存储库,这很公平。我是为车手做一个,为引擎做一个,为汽车做一个等等,还是为参赛做一个大的?

哪种是此类工作的最佳实践?我对这种编码方法还很陌生。

最佳答案

我想对此确实没有单一的“最佳实践”——这取决于您的编码风格和应用程序的要求。您绝对可以为系统中的每个实体类型创建一个存储库 - 这样就可以正常工作。

在你这里的情况下,我可能至少会考虑为驱动程序建立一个存储库,并可能为汽车、发动机、底盘建立第二个存储库(因为它们属于同一专业领域 - 它们相互关联,它们“属于”在一起)。

但是:当然,如果汽车、引擎和底盘的单一存储库过于臃肿,您可能会考虑将其拆分为三个独立的存储库。

我会尝试在存储库的数量 - 尝试将逻辑上属于一起的东西组合在一起 - 以及这些存储库上的方法数量之间找到平衡。五、十种方法没问题 - 如果你说的是 20、30 或 50 种方法,你的存储库可能太大而且不实用。

这绝对是一个架构决定,因此,它们并不是真正有很多确凿的事实来指导你——它更像是一种“直觉”和体验之类的东西。如果你还没有那种必要的经验——选择一种方法,使用它,当你完成后——用批判的眼光再看一遍,看看:它有什么用?没用怎么办?然后在你的下一个项目中,尝试一些其他的方法,并在项目结束时也质疑它的有效性。生活和学习!

关于c# - 每个表一个存储库还是每个功能部分一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2984583/

相关文章:

c# - 路径平滑/点减少算法

c# - PBKDF2 和 C# 问题

c# - asp.NET LINQ 从数据库中删除

c# - 如何在不处理上下文的情况下刷新 Entity Framework 连接

c# - 无法获取托管类型 ('T' 的地址、获取其大小或声明指针)

asp.net - 使用Code First迁移发布我的数据库(程序包部署)

asp.net-mvc - 这是 jquery ajax 调用 aspnet mvc Controller 的有效数据吗?

.net - ActionExecutingContext - ActionParameters 与 RouteData

entity-framework - 0...1 关联上的 Entity Framework 基数问题

c# - SQL Server CE Code First 迁移问题