当前位置:  开发笔记 > 编程语言 > 正文

使用C#/ ASP.net MVC建模NoSQL论坛应用程序

如何解决《使用C#/ASP.netMVC建模NoSQL论坛应用程序》经验,为你挑选了1个好方法。

我目前正在开发一个基于论坛(问题/答案)的应用程序.
使用C#ASP.net MVC和MongoDB进行数据存储.

我正在看模型.
我想要有这样的单独的类:(简化)

public class Question
{
    public string ID { get; set; }

    public string Title { get; set; }
    public string Body { get; set; }
    public List Tags { get; set; }
    public DateTime DateCreated { get; set; }

    public string ForumID { get; set; }
}

回答

public class Answer
 {
    public string ID { get; set; }
    public string QuestionID { get; set; }
    public string Body { get; set; }
    public DateTime DateCreated { get; set; }
 }

我的问题是:
如何处理"回复"
我最好拥有(如上面的模型中)两个单独的"实体"
或者我应该在我的问题模型中有一个答案列表?

一些要求是我需要能够显示答案的数量等...

将它存储在NoSQL数据库中,我知道我应该对事物进行反规范化,但是如何在不检索整个帖子的情况下插入答案呢?使用NoRM和MongoDB可以实现这种操作吗?



1> Gates VP..:

通常在MongoDB中,您可以将答案嵌入到问题中.99%的时间你会按问题查询,所以你也可以同时获得答案.

一些要求是我需要能够显示答案数......

如果你带回问题的答案,这真的很容易.你将有一个包含答案的数组/列表/集合.所以你只需抓住长度.

但如何在不检索整个帖子的情况下插入答案

MongoDB支持原子"$ push"操作.这意味着您可以将项添加到数组,而无需从客户端实际加载文档.从javascript shell,它看起来像这样:

db.questions.update( {_id : your_id}, { $push : { answers : your_answer_object } } );

所以MongoDB能够做到这一点.你必须检查NoRM驱动程序,以确保它们实际上允许这种类型的行为(如果它们不支持$ push,它们真的会丢失一些东西).

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有