LINQ 还是别的啥?

Posted

技术标签:

【中文标题】LINQ 还是别的啥?【英文标题】:LINQ or something else?LINQ 还是别的什么? 【发布时间】:2011-10-03 20:08:54 【问题描述】:

我最近离开了一家小公司,当时我们正在使用 LINQ2SQL 编写 .NET MVC 应用程序以进行数据访问,从而获得了新的职位。在这里,他们仍在使用 Web 表单和内部编写的 ORM,但希望在不久的将来迁移到 MVC 和可能的 LINQ2SQL。我个人喜欢 LINQ2SQL 的所有内容,除了在更改表(添加列或其他内容)时遇到的问题以及每次都必须重新生成 dbml 文件。

1) 是否已经解决了该问题,或者是否有人知道 Microsoft 是否计划解决该问题?

2) 如果我们要在这里使用 LINQ2SQL 以外的东西作为我们的新数据访问层,大家的建议是什么?

【问题讨论】:

您是指专门的 LINQ to SQL 吗?现在有很多现成的 ORM 支持 LINQ。 LINQ 本身与数据库无关,只有与一些 ORM 技术一起使用时...所以,您是在谈论 LINQ2SQL、EF、LINQ for NHibernate...?跨度> 抱歉,我编辑了所有内容 相关:***.com/questions/1110171 选择 .NET ORM:***.com/questions/1377236/… 【参考方案1】:

当前的 MS 正在向实体框架推进。为什么?因为坦率地说,由于 EF 延迟,LINQ to SQL 是一个杂物。我喜欢将 LINQ 作为“迭代”的一种手段(不太正确,因为它适用于 rX 而不是枚举,但这可能在技术上有点过于具体了)。

如果你想朝着 MS 前进的方向前进,我会瞄准 EF。我个人在当前迭代中发现了一些问题,但它正在变得更好。您的里程可能会有所不同。

如果这不是数据访问的方式,我会考虑使用非自定义 OR 映射器。那里有大量的它们,其中许多具有悠久的历史并且足够稳定以推荐用于企业使用(例如 nHibernate)。除非绝对必要,否则维护自定义 OR 映射器的工作量超出团队应承担的工作量。

【讨论】:

【参考方案2】:

这可能是主观的,但如果 (1) 是一个问题并且您可以选择第三方产品,Developer Express Express 持久对象有一个有趣的解决方案。当模型更改时,这允许在可能的情况下对数据库进行透明更新。它已经存在了很长时间并且很稳定。

Microsoft 现在将实体框架推广为他们的 ORM,旧的 LINQ to SQL 技术正在迅速被弃用。 EF 正在大力发展,无疑会有所改进。

您肯定想摆脱内部 ORM。

【讨论】:

【参考方案3】:

    嗯,最新版本的实体框架支持“代码优先”,其中数据库是从您的业务对象自动创建的。但是模型仍然需要在模型发生变化的任何时候重新生成。所以我不太确定你在这里寻找什么。

    实体框架。

【讨论】:

+1 用于实体框架。 LINQ to SQL 不再处于积极开发中。大部分(如果不是全部)它已经被移到 EF 4 中的功能。【参考方案4】:

实体框架允许您从数据库进行更新。您需要做的就是右键单击 edmx 文件并选择“从数据库更新模型”。它是 Linq2SQL 的快速替代品,您可以以相同的方式访问它。两者之间只有一些小的变化。

【讨论】:

根据我的经验,这实际上并不能正常工作。要从修改后的表中更新模型,我发现有必要删除该表的实体,然后重新添加它。这是使用最新版本的 EF。

以上是关于LINQ 还是别的啥?的主要内容,如果未能解决你的问题,请参考以下文章

前向声明?,包括守卫?,还是别的啥?

UITextView 还是别的啥?需要帮助理解

放松 Segue 还是别的啥?

PhoneGap——还是别的啥?对于使用 Swipe 和 Pinches 的 iOS 应用程序

HTML中form 的action属性的uri地址应该是一个本地的根目录文件夹还是别的啥地址?

MVC LINQ 无法识别的方法