Linq to sql LinqToSql最佳实践

Linq to sql LinqToSql最佳实践,linq-to-sql,Linq To Sql,我刚刚开始使用LinqToSql创建数据访问层。每个人都在谈论很酷的语法,我真的很喜欢Linq 但是当我看到如果你在LinqContext上拖动一些表,你的类是如何生成的,我很惊讶:这么多的代码谁都不需要 所以我看了其他人是如何使用LinqToSql的,比如Rob Connery在他的店面演示中 由于我不喜欢生成所有这些代码的方式,我手工创建了域层,并将生成的类用作参考。有了这个解决方案,我就没事了,因为我可以使用Linq提供的特性(解除限制执行、延迟加载等),我的域层也很容易理解 您是如何使用

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

但是当我看到如果你在LinqContext上拖动一些表,你的类是如何生成的,我很惊讶:这么多的代码谁都不需要

所以我看了其他人是如何使用LinqToSql的,比如Rob Connery在他的店面演示中

由于我不喜欢生成所有这些代码的方式,我手工创建了域层,并将生成的类用作参考。有了这个解决方案,我就没事了,因为我可以使用Linq提供的特性(解除限制执行、延迟加载等),我的域层也很容易理解


您是如何使用LinqToSql的?

创建的类没有看起来那么重。当然,它需要相当多的代码行,但总的来说,它是轻量级的,因为它可以提供的功能

我以前也创建自己的表,但现在我只使用LINQtoSQL DataContext。为什么?创建更简单,功能更好,互操作性更好,它可能比我自己的东西更快(不是在每个方面。通常我自己的东西在一件事情上都非常快,但在其他事情上通用的东西更快)。
但最重要的是:将新开发人员引入LINQ比引入我自己的开发更容易。这里有教程、示例代码、文档,以及我必须为自己的代码创建的所有内容。将我的东西与其他技术(如WCF或数据绑定)一起使用也是如此。有很多陷阱需要注意

我学会了不让自己陷入困境,这在一开始看起来又快又容易,比学习如何使用libs有趣得多,但在接下来的几个月里,这是一个真正的痛苦,通常对我自己来说也是如此

过了一段时间,创建自己的数据容器的新奇感消失了,我注意到添加一个特性带来的痛苦。如果我使用了提供的类,我会免费拥有一个功能。

接下来我必须向其他程序员解释我的代码。如果我使用了提供的课程,我可以让他去一些网站了解这些东西。但在我的课堂上,我必须亲自训练他,这需要很长时间,而且很难让新人参与项目。

使用编译查询。Linq到SQL的速度非常慢,否则

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

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


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

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


如果您想继续使用现有的设计器,只需修改代码生成过程,请选择我的。

我正打算发布这篇文章。很高兴听到其他人这样使用它。我的团队对强类型数据集使用了类似的技术,将接口实现添加到Vs.Net生成的部分类中。他们有关于这方面的代码示例吗?我基本上是使用依赖注入模型来模拟数据库来编写我的域。现在,我正在制作我的LINQ到SQL数据库,并努力解决如何在没有一些蹩脚的转换的情况下有效地将我的业务对象x映射到我的LINQ对象x。我也考虑过这一点,但走了Jeff Fritz提到的路线。不需要思考!我真的很感兴趣,为什么这被否决了。我们在生产中使用LINQtoSQL,我们不得不将大多数查询重写为编译后的查询,我们从中获得了大约10倍的性能提升。