我知道这是一个相当激烈的问题。但无论如何,我想听听Stackoverflow中那些人的意见。鉴于XML支持在SQL Server 2005/2008中非常好,并且不关心数据库独立性,为什么需要Linq-to-SQL,Entity Framework,NHibernate等等,这些在高级用例中非常复杂和笨拙如果通过使用POCO,XmlSerializer和处理XML的存储过程,可以实现更复杂的中间层?有关参考,请参阅链接:http://weblogs.asp.net/jezell/archive/2007/04/13/who-needs-orm-i-ve-got-sql-2005.aspx
答案 0 :(得分:2)
“不太复杂的中间层”令我担心...... ORM的要点是确保大多数复杂性与您的实际域相关(无论是订单处理,反馈还是其他) 。复杂性必须某处。 last 你想要的复杂性在数据库 - 你的最少可扩展商品(你通常扩展数据库服务器 up (这是昂贵的) ),当你扩展app-servers out (便宜很多)时.--
可能存在使用文档数据库而不是关系数据库的情况,但RDBMS不会去任何地方。 一般我建议:将数据库中的xml使用量限制为合理的数量。 可以是一个非常有效的工具 - 但要小心,你不是在创建一个内部平台。关系数据库(由任何供应商提供)在其工作中特殊,具有复杂的索引,ACID,参照完整性等......利用该功能。
答案 1 :(得分:0)
数据库中的XmlSerialization和XML列可能难以使用,但我确信您可以使其工作。你仍然必须克服像循环引用这样的标准ORM挑战。 SQL查询对XML数据库列来说非常尴尬。
我认为在高级用例中不是复杂的ORM,而是在高级用例中复杂的对象 - 关系不匹配。我没有看到XML和存储产品如何以更好的方式真正解决这些高级用例。
XML本质上不是关系或面向对象的,并且您在混合中添加了额外的不匹配。