Linq to SQL有什么问题?
或者说,Linq to SQL有什么缺点使其不适合某个项目,无论是新项目还是现有项目?我想了解为什么您会选择不在特定项目中使用Linq to SQL - 包括哪些项目参数使其不适用。
Linq to SQL有什么问题?
或者说,Linq to SQL有什么缺点使其不适合某个项目,无论是新项目还是现有项目?我想了解为什么您会选择不在特定项目中使用Linq to SQL - 包括哪些项目参数使其不适用。
它对数据库架构的变化不太适应。您需要重建dbml层并重新生成数据上下文。
像任何ORM一样(我不会涉及它是否是ORM),您必须要知道生成了什么SQL,并且如何影响您的调用。
插入操作没有批处理,因此性能成本可能会很高。
它正在被放弃,转而使用Entity Framework
尽管它使用了提供程序模型,允许为其他DBMS平台构建提供程序,但只支持SQL Server。
[编辑@ AugustLights - 根据我的经验:] 懒加载可能需要一些修改才能正常工作。
话虽如此,如果使用正确,我认为它非常方便。
尽管以上所有问题,我认为linq-to-sql对于许多项目来说是一个很好的选择。
由于 System.Data.Linq.DataContext
类缺乏接口,因此在单元测试中进行模拟很困难。以下是一种可能的方法:模拟 LINQ to SQL DataContext。
因为您没有使用3.5版本...那算是一个有效的回答吗?!?!
嗯,我使用LINQ to SQL开发了一些应用程序。我发现的主要问题之一是必须分层应用程序。在LINQ to SQL中,实体类与数据访问代码紧密耦合。此外,DataContext存在一些问题,这意味着您可以使用DataContext对象检索项目,但不能轻松地将项目(对象)转移到另一个DataContext。
如果您不关心正确分层应用程序,并且只想快速创建应用程序(也称为RAPID应用程序开发),那么LINQ to SQL将非常有用。
我唯一认为可能成为技术“绊脚石”的事情是,如果你想使用除SQL Server之外的其他关系型数据库管理系统。(虽然可以通过解决方案来解决 - 请参见Matt Warren在http://blogs.msdn.com/mattwar/的博客)
除此之外,已经在之前回答你问题的答案中列出了一些优缺点。然而,到目前为止提到的所有负面因素都有解决方案,因此它们并不是真正的绊脚石。
一个非技术性的[潜在]绊脚石是MSFT会放弃它,转而支持EF...更多信息请参见:http://oakleafblog.blogspot.com/2008/05/is-adonet-team-abandoning-linq-to-sql.html
尽管(在我看来)EF的当前状态已足以让他们继续开发L2S。所以让我们希望他们这样做...