LinqToSql最佳实践

时间:2008-10-27 22:03:56

标签: linq-to-sql

我刚开始使用LinqToSql创建数据访问层。每个人都在谈论很酷的语法,我真的很喜欢Linq。

但是当我看到如果你在LinqContext上拖一些表时你的类是如何生成的那样我很惊讶:没有人会需要那么多的代码?!

所以我看了其他人如何使用LinqToSql,例如Rob Connery在他的StoreFront演示中。

由于我不喜欢生成所有这些代码的方式,因此我手动创建了我的域图层,并使用生成的类作为参考。使用该解决方案我很好,因为我可以使用Linq提供的功能(延迟执行,延迟加载,...),我的域层很容易理解。

你是如何使用LinqToSql的?

5 个答案:

答案 0 :(得分:6)

创建的类并不像看起来那么重。当然,它需要相当多的代码,但总而言之,它与它所提供的功能一样轻巧。

我曾经创建自己的表,但现在我只使用LINQtoSQL DataContext。为什么?创建更简单,功能更好,互操作性更好,它可能比我自己的东西更快(不是在每个方面。通常我自己的东西在一件事情上非常快,但通用的东西在其他一切方面更快)。登记/> 但最重要的部分是:将新开发人员带入LINQ的东西比让我自己更容易。有教程,示例代码,文档,所有内容,我必须自己为我的代码创建。与使用其他技术的东西相同,如WCF或数据绑定。有很多陷阱需要处理。

我学会了不要艰难地将自己发展到一个角落,一开始看起来既快又简单,比学习如何使用lib更有趣,但是几个月之后是一个真正的痛苦在路上,通常是为了我自己。

经过一段时间后,创建自己的数据容器的新颖性逐渐消失,我注意到添加功能所带来的痛苦。如果我使用了提供的类,我将免费获得一个功能 接下来我必须向其他程序员解释我的代码。如果我使用提供的课程,我可以将他指向一些网站来了解这些内容。但是对于我的课程,我不得不自己训练他,这需要很长时间,并且很难让新人参与到项目中。

答案 1 :(得分:4)

LinqToSql为您的表生成一组部分类。您可以将接口定义添加到实现域模型的这些部分类的“另一半”中。

然后,如果您使用存储库模式来包装对Linq查询的访问,以便它们返回对象的接口实现(底层Linq对象),LinqToSql变得非常灵活。

答案 2 :(得分:1)

您可以手工编写自己的类,并使用LINQ to SQL属性来声明映射或外部XML文件。

如果您想坚持使用现有的设计师,只需修改代码生成过程,请选择我的templates that let you tailor the generated code

答案 3 :(得分:0)

使用已编译的查询。 Linq to SQL比较慢。 Really

答案 4 :(得分:0)

我们使用手工制作的域模型,以及生成的类,以及一个简单的实用程序,它利用反射在需要时在它们之间进行转换。如果我们达到反射产生性能瓶颈的程度,我们已经考虑过编写转换器生成器。