Linq2Sql最佳实践

时间:2010-05-17 07:02:34

标签: linq-to-sql

我最近正在迁移到Linq2Sql,我未来的所有项目都将使用Linq2Sql。话虽如此,我研究了如何在应用程序设计中正确插入Linq2Sql。

  • 在什么层放什么?
  • 您如何设计存储库和业务层服务?
  • 我应该在交互层的Linq2Sql实体上使用DTO吗?
  • 我应该注意什么?
  • 你遇到了什么问题?

我没有发现任何真正谈论过单一事物的坚如磐石的材料,每个人都有自己的意见。我期待着您对如何在项目中集成/使用Linq2Sql的想法。我的首要任务是维护 [它应该是可维护的,当多个人在同一个项目上工作时]和 scalabilty [它应该具有进化范围]。

感谢。

1 个答案:

答案 0 :(得分:4)

我在生产应用程序的过去两年半里一直使用linq实体,我可以说这是一个非常好的体验......但这并不意味着你应该用Linq做所有事情。

我将尝试给你一些问题的答案,

我认为你应该先问你想要创建什么样的应用程序;一旦情况明确,您将对将要对数据库(或存储库)执行的事务或查询的数量有一个奇怪的想法。

Linq对于抽象数据访问,上下文和实体处理非常有用,但所有内容都需要付出代价。对象将以成本创建,你真的需要考虑这个。

如果您的应用程序具有“好不太重”的数据访问权限,Linq将是为您的应用程序节省时间的完美工具。

如果您的应用程序完全基于数据提取或处理,Linq也会很棒。

如果您的应用程序处理大量数据(检查您的应用程序),您将需要做其他事情以避免创建一堆可能无用的对象。

这意味着什么?您需要知道智能数据访问意味着什么......这就是让SQL为您工作(在SQL的情况下);如果你要做很多关节,交叉信息和东西,创建为你创建数据结果的存储过程,然后使用Linq或SqlCommand或SqlDataAdapters等获取它......

在什么图层放什么? 由于Linq为您提供了数据访问抽象,因此您可以将代码放置在业务逻辑所需的位置。如何构建代码有很多好的做法; Linq(与任何其他实体框架或数据访问库一样)将适合正确的位置。 避免在控件中有可能直接使用linq表达式(asp.net有很多带有linq数据源的控件),而是用服务类包装你的'query',该服务类可以被代码或控件实例化为对象数据源。 / p>

我发现了什么? Pure Linq并不总是适用于大型应用程序或项目(因此您将在linq中获得许多内容,而在以前更简单的解决方案中可以访问您的存储库),但可以帮助您节省时间。 如果要提供高质量的应用程序,必须实现存储过程。

希望此评论有所帮助。 欢呼声。