Linq-to-Sql是否缺少任何主要功能?

时间:2009-01-14 02:14:09

标签: linq linq-to-sql

Linq-to-Sql缺少哪些主要功能?

  • 与其他主要SQL数据库引擎(MySQL等)的兼容性
  • 映射多对多关系
  • 还有其他人吗?

我已经在它的DAL Heart开发了一个与Linq-to-Sql的重大项目。我以前没有使用关系数据映射器开发,因此它是来自数据集的学习曲线。但我没有发现Linq-to-Sql无法解决的任何重大问题。 我的测试得出结论,它明显快于Linq-to-Entities。

那么Linq-to-Sql缺少哪些主要功能?

我想我想问的是Linq-to-Sql上的开发是否已停止 - 这有关系吗?

8 个答案:

答案 0 :(得分:3)

Maybe the biggest thing missing is a future

我倾向于同意我所链接的这篇文章,MS说Linq将继续开发到SQL,但他们的行为(或更具体的非行动)讲述了一个不同的故事。 MS当然希望你打赌Linq to Entities。

答案 1 :(得分:3)

  • 对热切加载的良好支持
  • 高级映射(即不是类和表之间的1对1映射)
  • 使用数据库更改刷新映射的能力

答案 2 :(得分:2)

首先,它没有死。虽然它没有在4.0中获得任何新功能,但它们修复了一堆错误和怪癖,我相信它们会继续这样做。

查看.net 4.0的Linq-to-SQL更改列表:
http://damieng.com/blog/2009/06/01/linq-to-sql-changes-in-net-40

IMO它可能是一件好事,它们没有触及太多的核心 - 它坚固,高效并且在大多数情况下产生非常好的SQL,因此任何大手术都会冒险破坏一些好东西。设计器和运行时中的少数缺失位可以用螺栓固定或解决。

另外,Matt Warren,最初在MSFT上写过L2S的人写了一个“版本2”,他在他的博客和codeplex.com上发布了开源(MS-PL)。他称之为IQToolkit,但我想把它称为L2Sv2 ......:)

在以下处查看:
http://blogs.msdn.com/mattwar/
http://www.codeplex.com/IQToolkit/

答案 3 :(得分:2)

Linq to SQL并不容易支持多层架构。

实体框架从一开始就设计为支持分布式方案。虽然在.Net 3.5 EF并不完全存在(至少以自动方式),但它为进一步改进奠定了基础。因此,在.Net 4.0中,EF将T4模板添加到代码生成自我跟踪实体和DTO。

答案 4 :(得分:1)

我最近一直在开发一个使用它的系统。我设计它所连接的数据库的同事也为它做了一些L2S编码。他不停地抱怨的两件事是:

1 /没有根据某些条件进行批量删除。 L2S将最终单独删除行,这是非常低效的。有很多博客讨论各种解决方法。

2 /更新需要繁琐的查询对象,更新它然后提交更改的机制,即初始查询不是必需的。如果你知道一行的密钥,你应该可以直接更新它而无需事先查询。

答案 5 :(得分:1)

我几个月来一直在使用linq sql。我发现的唯一一个问题是,在计算程序化结果之前,将谓词添加到存储过程和程序生成结果的混合中将尝试将查询推送到SQL。通过首先调用.ToList()可以很容易地解决这个问题。

每隔一段时间,我希望Linq to Entity功能,但linq to sql完成了我想要的95%。

答案 6 :(得分:1)

我不认为它已经死了。我认为它将会得到解决,目前的问题可能会消失。但我认为它不会比现在更重要。有关系吗?我个人认为不这样做。我认为框架很好。我发现L2S的两个主要问题是无法轻易分离实体和笨拙的更新机制。

答案 7 :(得分:0)

除非为了速度和简单性,微软可以使实体框架比linq更好地实现sql,所以恕我直言。