用于Oracle的最佳ORM工具,具有4000个表

用于Oracle的最佳ORM工具,具有4000个表,orm,Orm,我正在寻找与Oracle和SQL Server 2005配合使用的最好的.Net ORM工具。我们有一个Oracle数据库,大约有4000个表。我尝试了TierDeveloper和Codesmith,但当我尝试用Oracle DB映射对象时,他们没有响应。哪种ORM工具将是与大型Oracle数据库一起工作的最佳ORM工具 我要认真研究一下Java和.Net。我这样说有几个原因: 首先,像NHibernate这样的ORM,如果真的试图抽象掉数据库,我认为会适得其反,特别是在处理遗留数据库时。这里的

我正在寻找与Oracle和SQL Server 2005配合使用的最好的.Net ORM工具。我们有一个Oracle数据库,大约有4000个表。我尝试了TierDeveloper和Codesmith,但当我尝试用Oracle DB映射对象时,他们没有响应。哪种ORM工具将是与大型Oracle数据库一起工作的最佳ORM工具

我要认真研究一下Java和.Net。我这样说有几个原因:

首先,像NHibernate这样的ORM,如果真的试图抽象掉数据库,我认为会适得其反,特别是在处理遗留数据库时。这里的遗产并不意味着你认为它意味着什么。像Hibernate和JPA Java这样的工具定义了几乎所有不能以正确的方式进行操作的东西作为遗留,其中包括认真地使用复合键,我读了一本JPA书籍,名为复合键遗留

另一方面,Ibatis为您提供了ORM的大部分功能以及Hibernate的一些功能,例如,无法像groupBy功能那样完成,但仍然让您能够编写简单的SQL。我想,如果有这么大的数据库,您将有一些有问题的建模决策,这些决策即使不是不可能映射到许多orm中,也是很困难的。通过编写DirectSQL,您可以根据定义在ibatis中满足这些情况

对于查询语言而言,非特定于供应商的ORM也是最低公分母。如果所有数据库都不能做到这一点,那么您就不能在任何地方做到这一点。Oracle拥有最复杂的SQL方言之一。你应该用它。像CONNECT PREVIOR这样的东西在许多其他SQL方言中都不存在,因此在抽象的ORM中没有以性能方式建模

我写了更多关于这方面的文章


现有设计束缚了您的手脚,这一事实使我们有理由尽可能地接近SQL。

如果您没有对象模型,我会仔细考虑ORM。我认为在表和列、对象和属性之间使用1:1映射是错误的。如果对象只是结构,没有行为或规则封装,那有什么意义

在这种情况下,我更喜欢另一种方法:iBatis、纯JDBC、存储过程或其他允许您调优SQL的方法,而不是依赖ORM生成的内容

更新:Oracle拥有TopLink。这会让我认为他们已经对其进行了优化,以便与他们的数据库配合良好:

但事实是,如果您的模式做得不好(例如索引不良、过度连接、缓存等),ORM工具将无能为力。底层数据库将对您的感知性能产生很大影响

试试实体表单:

EntityORM是.NET2.0的一个全类型对象关系映射库

EntityForm的主要优点是易于使用。大多数ORM库仍然需要编写大量类型转换和其他管道,EntityORM的设计目的是让程序员从这些繁琐且容易出错的任务中解脱出来,使其使用起来非常直观

其主要特点是:

* DataBase independent
* Ease for build new drivers that are independent from the EntityORM core framework (for now there is Sql Server, Sql CE, MySql, Oracle, PostgreSQL and Access drivers)
* Automatic mark changed for changes entities (optional)
* Automatic lazy loading (optional)
* Automatic transactions (optional manual transaction for instance for two-phase commit)
* Ease to map for an existing database with minimal effort
* All relational types are supported (One-To-One, One-To-Many, Many-To-One, Many-To-Many)
* Flexible event framework
* Conditions para load filter data into entities
* Capability to map to different table names or field names
* Default values
* Rules validation
* Autonumber
* Guid
* Generic list to managed multiple entities hidden deleted entities
* Typed entities are lazy loading with caching reducing significantly the needed for reflection
* Entity views to faster load read-only data from one ore more tables into a single flat entity
* Join conditions to join several tables in to a sigle entity view
* Generic list to managed multiple entity views
* Distinct, automatic group and aggregate functions (count, sum, largest, average, smallest) supported in entity views

使用DevExpress产品XAF进行更多详细检查

我会投票支持你,但你会惊讶地发现有多少NHibernate不算作传统。Hibernate,没有groupBy?瞧,帕斯卡:这不是一回事。Ibatis的groupBy聚合成行,同时在每行中保留子集合中的所有子元素。Hibernate的全部目的是允许开发人员创建一个纯Java对象模型,并在幕后构造一些东西,从而使对象能够正确、高效地自动持久化到数据库,而无需程序员直接干预持久化机制。如果您想处理透明持久化的对象,那么Hibernate是一个很好的选择。如果你不关心面向对象的领域模型,Oracle是一个很好的选择,它是透明持久的。我想你是说XPO,XAF是DevXPress应用程序框架XPO是他们的orm