Linq to sql with repository for medium size web application

时间:2012-05-09 17:47:44

标签: c# linq design-patterns linq-to-sql repository

是否在Linq to Sql之上创建了一个Repository模式实现,这是一个适用于中型公共面向Web应用程序的优秀设计?

该应用仅处理Sql服务器后端,需要快速开发

我真的很喜欢LINQ2SQL,因为它是一个整洁的DAL。我想到了EF,但对于这个项目来说太过分了。

非常感谢您提出的建议。

3 个答案:

答案 0 :(得分:2)

回答您在评论中提出的问题:这样的存储库会让您获得什么? L2S已经是一个“存储库”。答案可能是否定的。

人们交换OR映射器的次数是多少?它永远不会发生。如果确实如此(这是非常不可能的),您无论如何都需要检查并重新测试整个应用程序。通过总是支付非常高的价格,提取ORM可以防止极不可能的成本。不是一个好交易。

答案 1 :(得分:2)

DDD的一个大宗旨是创建一个可以在其生命周期内“轻松”发展的应用程序。在将来,您可能会发现Linq2Sql不能满足您的需求,或者(更有可能)该技术已经退役(因为Linq2Sql会支持EF),等等。使用存储库模式意味着您正在编写应用程序代码坚实,众所周知的概念,以抽象的方式。实际的实现对您的各种应用程序功能是隐藏的,这意味着您可以根据需要在将来交换它们。

还有其他好处,例如允许使用存储库的组件独立于其环境使用。假设您有一个使用存储库的组件,然后您发现您需要能够在服务中使用此组件来执行夜间作业。您可以创建使用相同代码的服务,但使用与Web服务交互的存储库实现,而不是数据库。你编写了一次代码,只是翻了一些开关。

另一个重要原因是单元测试。您不需要对ORM或持久性API的单元测试进行单元测试,您需要进行单元测试,否则与持久性交互的应用程序将按预期工作。

所以是的,我认为这是一个很好的设计。

答案 2 :(得分:1)

使用EF而不是v4.1及更高版本,并跳过存储库模式 - 您始终访问数据库并始终访问ms SQL。