.netTiers + Codesmith VS 实体框架 .Net C#

Ira*_*kli 3 .net c# entity-framework .nettiers codesmith

我对优点和缺点有疑问,当我比较netTiers(与 codesmith)和Entity Framework

这个问题被问了很多次netTiers(与 codesmith 一起),我发现的所有主题都非常古老,Entity Framework可能比当时变得如此流行的时间更早。

我实际上很舒服Entity framework(不精通,但我喜欢它并且我netTiers经常使用它)并且不太接近(使用 codesmith),这就是为什么我想知道当我看到netTiers复杂的项目时要决定什么。一种选择是留下来面对面处理所有我认为需要大量时间的问题。另一个 - 使用来自 Microsoft 的已管理和预先设计的精美实用程序(entity framework在我花了几天的时间后,这对我来说似乎很漂亮netTiers)。

小智 6

舒适度很重要,如果您是主要开发人员,并且您喜欢实体框架,那么这是坚持使用它的一个非常重要的理由。但是,就您而言,听起来您正在进入一个使用 netTiers 的新环境,您更喜欢 EF,并且您想找个借口切换到您最喜欢的框架。

我使用过这两个框架,并且我几乎同时开始使用它们。在我看来,他们都有自己擅长的领域。

EF 更适合小型项目,它主要用于代码优先的方法,并在应用程序的新版本推出时允许应用程序升级数据库。但是,它也促进了使用 linq-to-sql 生成较差的 sql 查询,因此其整体数据吞吐量往往低于 netTiers。如果开发人员几乎没有直接的数据库经验,或者没有对数据库的直接管理访问权限,那么 EF 对他们来说可能是一个更有吸引力的选择,因为它可以让他们收回一点控制权。

netTiers 在减少代码编写和维护方面大放异彩。与 EF 不同,它只支持数据库优先的方法。netTiers 会自动为您生成整个 DAL,并在单击生成按钮时保持更新。它更适用于大型项目,尤其是您可以完全控制托管数据库并可以轻松推送升级的 Web 项目。netTiers 的致命弱点是用​​于生成 DAL 的 CodeSmith 配置。此配置可能需要保留在源代码管理中,因为如果它丢失并且高度自定义,那么重新创建它可能会非常困难,因此您下次按下按钮时会以相同的方式生成 DAL(这在开发人员更替期间可能是一个问题)。netTiers 还允许您查看所有 DAL 代码,并根据需要进行调试,而 EF 只是一个您无法使用的 dll。

从历史上看,netTiers 是在 EF 真正成为一个可行的框架之前开发的。它的开发是为了解决一个真正尚未解决的问题。从此EF真正成长起来,在很多领域已经超越了netTiers,导致netTiers人气一落千丈。EF 远比 netTiers 更具可配置性和灵活性。但是,EF 在代码生成方面始终无法触及 netTiers,并且需要做更多的工作来确保它在数据吞吐量方面与 netTiers 保持一致。

我见过开发人员手动修改 DAL 代码的应用程序,这破坏了 netTiers 通过自动生成 DAL 来减少编码时间的能力。只要您没有陷入这种情况并且您已经拥有可靠的 netTiers 设置,那么尝试将其撕掉并转换为 EF 可能会浪费精力。