我需要查看一个使用Oracle后端的新ASP.NET Web应用程序的ORM解决方案。
有没有人使用Entity Framework和Oracle有好/坏的经验?
是否有任何(最好是免费的)替代品?
我需要查看一个使用Oracle后端的新ASP.NET Web应用程序的ORM解决方案。
有没有人使用Entity Framework和Oracle有好/坏的经验?
是否有任何(最好是免费的)替代品?
微软没有支持 Oracle 的 Entity Framework 选项 - 所有当前的选项都是非免费的第三方提供商。
NHibernate 在我的经验中与 Oracle 配合得非常好,LLBLGenPro 也是如此(不免费,但具有合理定价的每个开发人员许可证,用于实体映射设计器)。
Oracle计划在“2010年底左右”发布beta版本,并在2011年投入生产。Oracle计划增强Oracle Data Provider for .NET (ODP.NET)以支持ADO.NET Entity Framework。Oracle数据库开发人员将能够使用Visual Studio工具和API,这是ADO.NET Entity Framework的标准组成部分。
ADO.NET Entity Framework是一个客户端/中间层技术。因此,Oracle的客户端软件和ODP.NET将直接集成到Entity Framework中,以支持与Oracle数据库的数据访问。
我对EF没有任何经验,但nhibernate是一个非常好的替代品。
可以看看Stephen Bohlen在summer of nhibernate上的屏幕录像,它提供了一个很好的nhibernate入门介绍。
Microsoft Oracle Client和ODP.NET都不支持Entity Framework和LINQ to SQL。 DataDirect在他们的新Beta版本中支持Entity Framework,但不支持LINQ to SQL。 Devart dotConnect for Oracle同时支持Entity Framework(和LINQ to Entities)和LINQ to Oracle(针对Oracle的特定实现的LINQ to SQL)。
Oracle现在通过其 Oracle数据访问组件(ODAC)支持Entity Framework。但是,这仅适用于.NET 4.0+。
如果你最终遇到像我一样的顾客,他们执意要使用.NET 2.0 / 3.5,那么现在免费的Telerik Open-Access ORM与Entity Framework非常相似,支持包括Oracle在内的多个数据库。如果尚未停止对旧版本.NET的支持,则可能会将其放弃,但你肯定可以下载提供支持的旧版本。
由于不再支持EF6,我们不得不坚持使用EF5来连接Oracle数据库。我们遇到了一些映射问题。默认情况下,它会将number(5)映射为short,并在读取超过32k的数字时抛出异常。修复引起了部署中的一堆错误。最终我们改变了数据库。避免使用number(5)和number(10)数据类型。
我目前正在寻找具有LINQ和Oracle支持的其他ORM。
到目前为止,我已经发现了Telerik Data Access和NHibernate。