.net 你认为是';切换到实体框架有什么好处?

.net 你认为是';切换到实体框架有什么好处?,.net,linq-to-sql,entity-framework,ado.net,.net,Linq To Sql,Entity Framework,Ado.net,由于LINQtoSQL很可能不会像实体框架那样得到如此多的积极开发,您认为最好切换到实体框架吗 我个人发现EF与感觉非常自然的LINQtoSQL相比,非常笨重而且难以使用 编辑:我最近在我的博客上发表了一篇关于我对这个潜在决定的感受的文章 依我看,现在不行 很明显(特别是从中)EF将面临一些重大修订,因为在LINQ到SQL和EF之间会出现“”场景。无论发生什么,英孚(几年后)几乎肯定会与今天的英孚截然不同。或者肯定是“足够不同”-p 因此,我的观点是:坚持简单。简单的是LINQ到SQL 如果我知

由于LINQtoSQL很可能不会像实体框架那样得到如此多的积极开发,您认为最好切换到实体框架吗

我个人发现EF与感觉非常自然的LINQtoSQL相比,非常笨重而且难以使用

编辑:我最近在我的博客上发表了一篇关于我对这个潜在决定的感受的文章


依我看,现在不行

很明显(特别是从中)EF将面临一些重大修订,因为在LINQ到SQL和EF之间会出现“”场景。无论发生什么,英孚(几年后)几乎肯定会与今天的英孚截然不同。或者肯定是“足够不同”-p

因此,我的观点是:坚持简单。简单的是LINQ到SQL

如果我知道一个臭名昭著的复杂系统很快就会发生变化,那么我看不到学习它有什么好处

我百分之百支持LINQ到SQL-p

如果我现在需要的不仅仅是LINQ到SQL,我会看看或者可能


edit-作为更新,我的立场有点软化,而且-但是我仍然使用LINQ to SQL作为我的主要工具;还有-LINQ to SQL;-p)。

很多有经验的开发人员都给出了“”的名称,这将在后面讨论

我认为我们期待ADO.Net团队在年内对其进行显著改进


以下是最近的PDC中的一些内容。

为了记录在案,对LINQ到SQL的未来表示了一些犹豫:


我必须同意马克·格雷威尔的观点。也许当Entity Framework的下一个版本发布(.net 4.0/VS2010)时,使用EF会有优势,到那时,它可能会与当前版本的EF有很大的不同

在那之前,至少我会像瘟疫一样避免EF,因为除了测试/实验代码之外,任何东西都不会影响生产

关于为什么EF还没有准备好进入黄金时段,这里有很多例子,但我认为这是一个明显的赢家-当使用EF和EntityDataSource控件时,通常一个简单的五表查询(10-15行SQL)会变成什么:

至于英孚的未来——随着微软一夜之间在重大战略问题上的努力,谁知道他们目前与英孚的“战略目标”是否会在几年后实现。。?我肯定不会打赌的。见:


除非您使用SQL Server(或SQL Server compact),否则LINQ to SQL似乎不是一个选项,所以我有足够的理由避免使用它并使用EF(我想使用PostgreSQL)


在EF的v1中肯定有足够多的东西缺失,这会让我犹豫是否推荐它。听起来EF的第2版(发布时)将是第一个被认真推荐切换到的版本。

如果您正在进行数据库驱动的开发,EF现在有真正的优势

我已经使用了LINQtoSQL和EF,并且克服了EFV1的许多小挫折

然而,有一件事让EFV1为我赢得了胜利,那就是出色的数据库更新向导。难以置信的是,这确实有效!这听起来可能很琐碎,但如果您正在进行数据库优先设计,您希望依靠工具为您创建类,而不希望为了进行更改而必须重新生成整个模型

这就是我的选择。我建议忽略EFV1的高级功能——它远没有达到其目标的雄心勃勃的平台的可用性

忍受EFV1的笨重,你将在未来处于最佳位置


Pete.

我已经完成了几个MVC项目,现在正在生产中,使用的是L2SQL Underthe hood,我觉得使用它非常愉快。我现在正在着手一个新项目,并决定使用EF和L2EF编写它,因为之前引用的文章宣称L2SQL已经死亡。仅仅几天后,我就决定回到L2SQL。一些简单的事情,比如必须使用下面显示的糟糕语法或不必要的查找为插入设置外键,都让我感到震惊

foo.Foreign_TypeReference.EntityKey = 
     new EntityKey("DataContextName.Foreign_Type", "Foreign_Type_Id", ForeignTypeId);
而不是:

foo.Foreign_Type_Id = ForeignTypeId;

我认为将L2SQL移植到EF的未来版本并不难,因为L2SQL有一部分功能(尽管实现得更好)。L2SQL有一些L2EF没有的东西,例如Single()和SingleOrDefault(),可以通过创建一些扩展方法迁移到EF。我认为使用L2SQL运行系统,然后在EF没有那么难闻的时候将其移植过来,所花费的时间要少得多。

最近,我不得不研究应该使用哪个ORM项目。起初,我试过L2S。它一点也不坏,但已经过时了(MS不再支持它),这就是我开始检查L2E的原因。我对生成的代码很在行,但在它们之间创建假视图、实体和映射只是为了使存储过程可用,而不是填充实体的所有字段,这对我来说太过分了。我想分离我的数据访问层,所以-我必须将数据从生成的对象映射到我创建的对象

我花了几个小时的时间用NHibernate+Fluent NHibernate+LINQ对NHibernate进行实验

坚持这种组合。

但我的关键点是:虽然有如此多的变化,但大量投资是错误的。LINQ到SQL只需要很少的投资,所以我认为风险不大。我完全同意,Marc。我只是向那些可能没有意识到(直到最近我读到这篇文章时才意识到)LINQtoSQL并非没有风险的人指出。当然,低风险和高短期收益是肯定的。从问题的数量可以看出,这是非常普遍的行为。必须热爱这个策略:扼杀人们真正喜欢的实现-公平地说,它比这复杂得多,我确实期待着几年后得到“真正的”答案(.NET 4.0)。MS在这里有一点公关/开发信心山要爬。我希望他们成功……因为真正的林