使用MongoDB(我假设其他NoSQL数据库API值得他们的盐)查询数据库的方式比SQL简单得多.没有繁琐的SQL查询可以生成等等.例如,从mongodb-csharp获取:
using MongoDB.Driver; Mongo db = new Mongo(); db.Connect(); //Connect to localhost on the default port. Document query = new Document(); query["field1"] = 10; Document result = db["tests"]["reads"].FindOne(query); db.Disconnect();
ORM怎么能简化呢?在一个体面的NoSQL API之上是否需要ORM或其他"数据库抽象设备"?
嗯,是的,对象关系映射器是MongoDB的冗余,因为MongoDB不是关系数据库,它是一个面向文档的数据库.
因此,您不是使用SQL,而是使用JSON编写查询.除非你真的,真的想写原始JSON,而不是Linq,那么你仍然想要使用映射器.如果您不想创建与MongoDB本身的耦合,那么您不希望传递实际Document
对象,您希望将它们映射到真正的POCO.
使用像MongoDB这样的面向文档的数据库,映射要容易得多,因为你有嵌套文档而不是关系,但这并不意味着它完全消失了.它只是意味着你已经用一种类型的"阻抗不匹配"代替了一种不同的,略微不那么戏剧性的不匹配.