【发布时间】:2009-03-04 22:56:10
【问题描述】:
问题标题很清楚,我想知道为什么它不同,为什么,什么时候为我的项目选择它?
【问题讨论】:
标签: c# .net vb.net entity-framework ado.net
问题标题很清楚,我想知道为什么它不同,为什么,什么时候为我的项目选择它?
【问题讨论】:
标签: c# .net vb.net entity-framework ado.net
I wrote a blog post on this a while ago。简而言之,它对 ORM 采用了与 Hibernate、ECO 和我所研究的其他 ORM 完全不同的方法。您可能认为这种方法更好、更差或不重要,但如果您看得足够深入,就很难怀疑它是不同的。但不要相信我的话。如果您真的对此主题感兴趣,我强烈建议您阅读 ACM Queue 中的 this technical paper 和 this interview。
【讨论】:
这可能不是您正在寻找的答案,但我认为您不应该在您的项目中使用它。它很年轻,也不是很完整。等下个版本出来吧。
如果您坚持使用实体框架,那么它有一些好处。一个不错的方法是它允许以非常简单的方式进行复杂的映射。当然,因为它是一项微软技术,所以 IDE 集成很好。
但就像我说的,我试过了,但我不相信它已经准备好实际使用了。
祝你项目顺利
【讨论】:
ADO.NET 不是 ORM。
基本上,不同之处在于每个人使用的抽象级别。
使用 ADO,您基本上可以查询数据库并将结果用作对象,就像是 RDBMS 和您的对象之间的桥梁。
您为数据库建模,然后从该模型创建对象。这就是为什么它是一个实体框架(数据库实体)
ORM 不是用于查询或将数据库记录表示为对象(尽管这是每个人都使用它们的方式——包括我——),而是一种将对象模型持久保存到关系数据库中的方法。
它们是对象到关系映射(不是关系到对象映射)
所以,当你有一个域(对象)模型并且你想要一些东西来持久化它(到 RDBMS)或者当你有一个实体模型并且你想将它用作你的对象时,你可以选择其中一个。应用程序。
【讨论】:
根据我的阅读,它对 WCF 远程处理/二进制序列化有很好的支持,这是许多 ORM 不太支持的(如果有的话)。如果您想在客户端使用 ORM 创建富客户端/服务器/远程处理应用程序,则可能值得研究。
【讨论】:
有什么不同?它没有向所有其他 ORM 学习。
这是我一直在为 InfoQ 追踪的问题
Does LINQ-to-Entities really return different results depending on previous queries?
Working Around Entity Framework's Large Data Model Issues
No Change Tracking for ADO.NET Entity Framework 2010
如果你决定使用它,这个工具是必不可少的。
Meta-data Synchronization Tools for LINQ to SQL and ADO.NET Entity Framework
【讨论】:
ORM 世界中一些最优秀的 .NET 人才似乎正在从事 NHibernate(免费开源;我使用它)和 LLBLGen Pro(商业)等项目。
NHibernate 是企业级全面多供应商 ORM 的主导标准。 NHibernate 也是纯 ORM 实现的主导标准,允许开发人员完全独立于 NHibernate 基础架构编写域模型,并完全消除代码生成的类。
NHibernate 一开始可能看起来很吓人。但是,一旦您稍微使用它,它实际上是相当友好的,并且自 7 月以来一直在努力使 NHibernate 几乎无需配置。
【讨论】: