基于文档的数据库适用于.NET技术的应用程序开发。

5

我想在我的asp.net mvc网站中使用某种nosql数据库,但是找不到有用的东西。我已经看过了MongoDB和CouchDB,但是我希望我的查询有更好的api(强类型而不是魔法字符串)。是否存在适用于.NET的类似解决方案?

5个回答

2
我是Mongo的.Net驱动程序的主要作者。目前还没有像ORM那样的映射器。相反,它使用等同于字典的简单文档。可以使用反射来迭代文档中的字段,并将它们赋值给对象的属性,这并不难。我以前为LDAP结果编写过类似的简单东西。使用Mongo时无需担心SQL注入,因为实际上没有解析的查询语言。所有驱动程序都用Mongo的本地语言与它通信。如果您需要动态生成JavaScript并将其发送到数据库,则有一些潜力,但这种情况应该很少见。如果您对使用驱动程序有任何疑问,请随时在Google Group上发布问题或通过GitHub发送消息。

嗨,我决定在我的项目中使用Mongo,但我不知道如何在我的文档中嵌套一些对象。比如说,我有一个问题文档,想要在其中添加答案,但是不知道该怎么做。 - T W
嵌入式文档只是包含文档上的属性。这是一个简洁的代码。如果需要,你当然可以将其分成多行。Document doc = new Document().Append("embeddedDoc", new Document().Append("attr1","val1")); - Sam Corder
好的,但是能否添加文档集合呢?假设我有一个问题,并想要为它准备一系列的答案,当我尝试这样做时,出现了异常,因为答案的键已经存在。 - T W
请在 GitHub 上给我发送一条消息,附上您试图操作的代码,或者将其发布到 mongodb-user 谷歌小组中。 - Sam Corder
MongoDB只能作为字典使用吗?我的意思是,如果我有一个用户类,其中包含名字和姓氏属性,那该怎么办? - azamsharp

1

不确定这是否是您正在寻找的,但您可以尝试http://www.db4o.com/。我自己从未使用过它,但它可能会对您有所帮助。


1
MongoDB不使用魔术字符串,而是使用查询文档来表示查询。同时也有一个开源C#驱动程序可用。我不确定C#驱动程序的具体情况,但如果还没有验证层,应该相对容易在其上面添加一个验证层。例如,在Python和Ruby的驱动程序之上也有类似的项目。

是的,但请告诉我如何以类型安全的方式保存和检索我的域对象? - T W
我不确定你说“类型安全”时确切的意思。我认为最好的方法是使用一个数据库访问层,处理验证你保存到MongoDB中和获取出来的数据。 - mdirolf

1

您可以使用ADO.NET连接到文本文件,并使用通过ADO.NET发出的SQL语法和命令进行读写。 本文中有一个示例。您的数据将以逗号或制表符分隔的记录格式以人类可读的格式存储。当然,对于大型数据集,速度可能会比较慢。

如果您不确定是否要摆脱SQL数据库和SQL语法,则可以通过SQL查询解决方案来查询文本文件。

您还可以通过将Excel电子表格视为SQL数据源(即使它们不是)来使用ADO.NET访问相同的功能。


1
这个问题被提出时,这还不存在...但现在有了Raven DB,一个由Ayende Rahien用C#编写的文档数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接