使用NoSQL API的ORM是多余的吗?

Ear*_*rlz 31 c# orm abstraction mongodb nosql

使用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();
Run Code Online (Sandbox Code Playgroud)

ORM怎么能简化呢?在一个体面的NoSQL API之上是否需要ORM或其他"数据库抽象设备"?

Aar*_*ght 22

嗯,是的,对象关系映射器是MongoDB的冗余,因为MongoDB不是关系数据库,它是一个面向文档的数据库.

因此,您不是使用SQL,而是使用JSON编写查询.除非你真的,真的想写原始JSON,而不是Linq,那么你仍然想要使用映射器.如果您不想创建与MongoDB本身的耦合,那么您不希望传递实际Document对象,您希望将它们映射到真正的POCO.

使用像MongoDB这样的面向文档的数据库,映射要容易得多,因为你有嵌套文档而不是关系,但这并不意味着它完全消失了.它只是意味着你已经用一种类型的"阻抗不匹配"代替了一种不同的,略微不那么戏剧性的不匹配.