Sql ORM有什么了不起的地方?
所以我有一个头靠着墙的时刻,希望有人能来帮忙,要么拆墙,要么阻止我的头移动 在过去的3/4周里,我一直在为一个新项目调查ORM的准备情况。ORM必须映射到现有的大型老化SQL数据库 所以我尝试了亚音速。我真的很喜欢v2和v3,在修改后可以很好地与VB配合使用,并且SQL中的命名模式运行正常。然而,它缺乏将实体属性名与列名分开的灵活性,这让我非常恼火(抱歉,Rob) 我尝试了实体框架,但我发现和其他人一样,它在某些方面有所欠缺 所以我咬紧牙关,尝试了nHibernate,但在一周左右的时间里,它以我喜欢的方式工作(在Codesmith的帮助下为我生成类/HBM),我对启动(构建配置对象)所需的时间感到沮丧,尽管我尝试了一些技巧来减少这段时间 我基本上是在构建一个可以在应用程序和网站之间共享的DAL类之后。我找错树了吗?对于一个有100个表的遗留项目,我应该返回ado.net并使用DTO吗?啊 对不起,我问的问题太过分了。我的头发不多了,我想保留我的头发 提前谢谢你,埃德Sql ORM有什么了不起的地方?,sql,performance,nhibernate,orm,subsonic,Sql,Performance,Nhibernate,Orm,Subsonic,所以我有一个头靠着墙的时刻,希望有人能来帮忙,要么拆墙,要么阻止我的头移动 在过去的3/4周里,我一直在为一个新项目调查ORM的准备情况。ORM必须映射到现有的大型老化SQL数据库 所以我尝试了亚音速。我真的很喜欢v2和v3,在修改后可以很好地与VB配合使用,并且SQL中的命名模式运行正常。然而,它缺乏将实体属性名与列名分开的灵活性,这让我非常恼火(抱歉,Rob) 我尝试了实体框架,但我发现和其他人一样,它在某些方面有所欠缺 所以我咬紧牙关,尝试了nHibernate,但在一周左右的时间里,它以
另外,我应该补充一点,我对SQL非常了解,也不怕脏手去写快速查询。根据我的经验,如果我不需要对SQL隐藏任何东西,那么大多数ORM最终都比SQL复杂得多。这违背了使用它们的全部目的 我热衷的一个解决方案是LINQ2SQL。它作为一个关于存储过程或视图的薄层表现得非常出色。它非常易于使用,而且不会试图隐藏SQL。ORM让我们为您:
PS:我同意Dmitry关于NHibernate的启动时间(见问题注释)。另外,你试过了吗?流利的NHibernate令人印象深刻地简单。当我第一次映射数据库时,我简直不敢相信自己的眼睛。它甚至比专有的ORMs(如DevExpress XPO)更容易。ORM工具的最大好处是它可以帮助您正确地分层应用程序。现在大多数项目都使用数据层连接到数据库。您可以从ORM工具开始,生成与数据库对象相对应的类。然后使用这些方法定义一个接口。所有持久性代码都使用此接口的方法。这样,业务逻辑层只耦合到这个更高层的接口,不需要了解数据库。事实上,不应该依赖ADO.NET甚至NHibernate ORM工具的另一个优点是可以将应用程序与数据库服务器分离。您可以更改db引擎,但仍然使用相同的代码。此外,ORM对您隐藏的不仅仅是SQL的复杂性。它还可以帮助您处理事务逻辑和连接池
我认为对于新项目来说,ORM工具是必要的。对于遗留项目来说,这没有多大好处,除非你有时间/金钱从头开始。这里基本上有两个问题: ORMs有什么好处?关于Stackoverflow也有类似的问题。见: