c# - .netTiers + Codesmith VS Entity Framework .Net C#

标签 c# .net entity-framework codesmith .nettiers

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

围绕 netTiers(使用 codesmith)这个问题被问了很多次,我发现的所有主题都非常古老,可能比 Entity Framework 变得如此流行的时候还早.

我其实对 Entity framework 很满意(不精通,但我喜欢它并且我经常使用它)并且不太接近 netTiers(with codesmith ),这就是为什么我想知道当我在复杂的项目中看到 netTiers 时应该做出什么决定。 一种选择是留下来面对面地处理所有问题,我认为这会花费大量时间。 另一个 - 使用来自 Microsoft 的已经托管和预先设计的精美实用程序(这就是我在 netTiers 上花了几天时间后,entity framework 看起来多么漂亮)。

最佳答案

舒适度很重要,如果您是主要开发人员,并且您喜欢 Entity Framework,那么这是坚持使用它的一个重要原因。但是,在您的情况下,听起来您正在进入一个使用 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 的可配置性和灵 active 要高得多。然而,EF 在代码生成方面一直无法触及 netTiers,并且需要做更多的工作才能确保它在数据吞吐量方面与 netTiers 保持一致。

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

关于c# - .netTiers + Codesmith VS Entity Framework .Net C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54555096/

相关文章:

c# - 无法使用 MageUI 选择入口点

linq - 仅获取日期时间的时间

c# - 为什么 C# 整数输入不接受正确的值?

c# - 用于单元测试的模拟 dll 方法

c# - 在元组列表中查找具有最高 Item1 值的元组 - 然后将其从列表中删除

.net - 众所周知的 "Process is terminated due to StackOverflowException"屏幕是怎么出现的?

c# - 构建错误: the type or namespace name 'data' does not exist in the namespace "xxx.yyy.zzz" (are you missing an assembly reference?)

.net - VS2015尝试运行应用程序时出错: Invalid Pointer

c# - 管理不同父实体中重复实体的一般方法

.net - 如何在 Visual Studio 2008 中从现有 SQLite 数据库创建 Entity Framework 模型?