Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.netTiers+;Codesmith VS实体框架.NETC#_C#_.net_Entity Framework_Codesmith_.nettiers - Fatal编程技术网

.netTiers+;Codesmith VS实体框架.NETC#

.netTiers+;Codesmith VS实体框架.NETC#,c#,.net,entity-framework,codesmith,.nettiers,C#,.net,Entity Framework,Codesmith,.nettiers,在比较netTiers(与codesmith)和实体框架 这个问题在netTiers(与codesmith一起)周围被问了很多次,我发现的所有主题都非常古老,比实体框架流行的时候都要古老 事实上,我对实体框架(不熟练,但我喜欢它,并且经常使用它)非常熟悉,而且与netTiers(与codesmith一起)也不是很接近,这就是为什么我想知道在复杂的项目中看到netTiers时要决定什么。 一个选择是留下来面对面地处理所有问题,我认为这需要花费大量的时间。 另一个-使用微软已经管理好的和预先设计好的

在比较
netTiers
(与codesmith)和
实体框架

这个问题在
netTiers
(与codesmith一起)周围被问了很多次,我发现的所有主题都非常古老,比
实体框架
流行的时候都要古老

事实上,我对
实体框架
(不熟练,但我喜欢它,并且经常使用它)非常熟悉,而且与
netTiers
(与codesmith一起)也不是很接近,这就是为什么我想知道在复杂的项目中看到
netTiers
时要决定什么。 一个选择是留下来面对面地处理所有问题,我认为这需要花费大量的时间。
另一个-使用微软已经管理好的和预先设计好的奇特实用程序(在我花了几天时间与
netTiers
打交道之后,
实体框架在我看来是多么美丽)。

如果你是主要开发人员,舒适度是一个很大的问题,您喜欢实体框架,这是坚持使用它的一个非常重要的原因。然而,在您的情况下,听起来您正在进入一个使用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更具可配置性和灵活性。然而,EF始终无法在代码生成领域与网络进行接触,并且需要更多的工作来确保其在数据吞吐量上与网络保持一致。
我见过开发者手动修改DAL代码的应用程序,这打破了netTiers通过自动生成DAL来减少编码时间的能力。只要你没有陷入这种情况,并且你已经有了可靠的netTiers设置,那么尝试将其删除并转换为EF可能是一种浪费。

使用EF-你已经给出了许多不使用netTiers的理由。如果值得实施,我需要分析利弊,因为在旧项目中实施不同的技术也会导致大量的工作。谢谢您的回答。我仍然在使用netTiers,并且已经能够用它创建TList和List对象,并且偶尔使用方便的linq。我在一个MVC项目中使用了EF,我使用的是数据库优先模型,它更为挑剔。每当我修改存储过程或向表中添加字段时,它都不会覆盖EF对象中的早期版本,例如,新字段也不会出现,因此我始终必须创建另一个SP,以便DB首先获取它并在代码中可用。我唯一关心的是netTiers上一次提交是在2015年。很高兴了解EF面临的挑战。最近一次对内蒂尔斯的承诺实际上是在去年年中。2020年5月也是如此。