我有一个asp.net mvc 2.0应用程序,其中包含区域/模块,如日历,管理员等...可能有多个区域需要访问相同的回购,所以我不知道放在哪里数据访问层和存储库。
第一个选项: 我是否应该为每个区域创建数据访问层文件(在我的情况下为Linq to SQL)及其附带的存储库,因此每个区域仅包含这些区域所需的表和存储库。
好处是运行该模块所需的一切都是一个地方,因此它更加封装(无论如何都在我的脑海中)。缺点是我可能有重复的查询,因为其他模块可能使用相同的查询。
第二个选项 或者,将DAL和存储库放在区域之外并将它们视为全局会更好吗?
优点是我不会有任何重复的查询,但我可能会为某些模块加载大量不必要的查询和DAL表。在未来的项目中重复使用或修改这些模块也是一项工作(尽管重用它们的可能性很小:)。)
哪个选项更有意义?如果某人有更好的方式,我很乐意听到它。
谢谢!
答案 0 :(得分:2)
我会将它们移到自己的程序集/类库中,并根据“聚合”创建存储库。意思是,为所有共享目的的操作(即帖子,评论,标签等)创建一个存储库和DataContext。
这将有助于区分每个DataContext应该做的事情,并最小化DataContext在幕后进行的跟踪。
另外,我不确定你的意思,“但我可能会为某些模块加载大量不必要的查询和DAL表。”如果您监视Linq正在创建的SQL,您可以非常轻松地调整查询。在您的存储库中创建仅从相应表中返回适当数量的记录的公共方法。你会感到惊讶的是,你可以通过Linq最大限度地减少“不必要的查询”来获得SQL的效率。