使用Linq-to-Sql还可以吗?

9
当 Linq-to-Sql 首次发布时,我在许多小型和中型项目中使用它,这些项目不需要真正的多层架构。
在我的工作中,我们现在几乎完全使用 NHibernate 进行真正的领域驱动开发。
我正在开发一个小型的临时(寿命可能为一年,也许更短)中间件组件,在配置和保持实体最新方面,NHibernate 感觉有点过度。特别是因为我对 DB 没有任何控制权,有时会发生变化,而且有点“遗留”。
最近对 DB 进行了一些更改,NHibernate 映射不是很完整。
我认为只需删除 IRepository 实现并替换为 Linq-to-Sql 实现可能会更容易。然后我可以仅使用 lambda 进行简单查询,并拖放表格。
在这种情况下,Linq-to-Sql 的 RAD 元素是有意义的。但它基本上是旧技术。我不应该使用它吗?我从未使用过 Entity Framework。我应该使用它吗?它使用起来是否像 Linq-to-Sql 一样简单快捷?
谢谢
3个回答

6

是否仍然可以使用Linq-to-sql?

是的。使用任何可以使您按时交付产品,具有所需功能和质量的技术都可以。您仍然可以找到使用ASP、ADO、VB6的项目。微软技术在许多国际公司中遇到很大问题的一个原因是它们的产品寿命非常短。Linq-to-sql在市场上不到2年,被微软弃用,但公司/社区对此提出了异议,微软稍微改变了他们的策略。Linq-to-sql没有新功能,但仍受支持且是完全功能的技术。

Linq-to-sql或EF能解决您的问题吗?

这要看情况而定,也许是,也许不是。不要相信RAD的市场宣传。有时候我觉得人们认为RAD是关于设计师的(链接1)。支持RAD的工具是关于良好定义的API的,这个API易于理解、易于使用,没有意外行为(链接2:最小惊奇原则)——你将使用API快速原型应用程序,但仍需要理解和实践。与手动完成整个数据访问相比,NHibernate的映射仍然处于原型阶段。我们甚至可以遵循良好框架的基本规则:易做的事情易做,困难的事情也有可能做到。这是NHibernate比EF或Linq-to-sql做得更好的地方。
如果你了解NHibernate,但没有任何关于EF或Linq-to-sql的实际经验,你可以确定在使用它的第一或第二个项目中,Linq-to-sql或EF都不会提高你的生产力。如果你没有太多关于NHibernate的经验,改变到EF或Linq-to-sql可能不会导致暂时失去生产力。
我认为EF或Linq-to-sql通常不会在数据库更改的情况下帮助你。我记得Linq-to-sql设计器根本没有更新映射功能,因此它经常完全不使用设计器,所以你仍然必须手动修改映射。EF从数据库更新模型可能会有所帮助,但这并不是万能药。一些更新可能需要手动修改EDMX文件(巨大的XML)。
最后,请注意,NHibernate的映射功能要强大得多,特别是在处理传统数据库时。Linq-to-sql的映射功能非常有限,它主要是将表与类进行1:1映射,有一些例外情况(基本TPH继承)。EF提供了更复杂的映射功能,但它需要正确设计的数据库。

2

如果你(和你的同事)对NHibernate感到舒适,那么它应该和Linq to SQL一样具有快速应用开发的能力。只要你明白微软不会为L2S提供更新和改进,就没有理由不使用它。但是根据我的经验,如果你已经知道如何同时使用这两个框架,就没有必要重新做一遍工作,仅仅因为L2S可能更加快速应用开发。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接