这更多是关于功能的可扩展性。如果你查看LINQ生成的领域对象,你会注意到有很多冗余代码,如果你转向其他持久化框架(如NHibernate),这些冗余代码可能就变得不必要了。一种选择是编写自己的领域层,使其更抽象,并将生成的领域映射到抽象层。保持领域层“无冗余”可以让你在不同的持久化框架中重复使用它。L2S在这方面并不是很好。其他问题可能包括性能,但我认为这在后续版本中得到了改善?
即使您的集合很小,由代码生成器生成的SQL也永远不会像手写的SQL一样优化,特别是如果获得良好的执行计划高度依赖于选择正确的索引。假设您手动编写这些情况并使用SP,在数据非常大的情况下,无论您的数据库引擎是否能够帮助您,您都需要许多技巧来实现有效的内存使用。但是每个抽象都有其限制。