MVC3 + MongoDB架构:将模型直接存储到数据库中?

时间:2013-03-03 20:44:10

标签: asp.net asp.net-mvc-3 mongodb model viewmodel

我目前正在使用mongodb开发mvc3应用程序。我不确定如何构建架构。例如。我的应用程序有一个页面用于管理注册用户的用户配置文件(如名称,电子邮件,枚举组合框中公开的一些属性)。因此,我有一个ManageProfileModel.cs,其中包含要管理的所有属性。使用mongodb数据的正确方法是什么?我应该将ManageProfileModel数据存储在mongodb中,还是必须添加一个包含User.cs,Invoice.cs等域类的附加层,并将这些对象存储在mongodb中(这些对象是在创建的模型中使用的)?

我在问,因为管理用户配置文件的模型不一定类似于用户(域)对象。我的第一种方法是将我的(视图)模型直接存储在mongodb中。我不确定以后是否容易获得我的(一致)数据。

谢谢!

1 个答案:

答案 0 :(得分:0)

我会将模型直接存储在Mongo中,用于大多数数据。我确定你已经知道了,但Mongo专注于非规范化,因此它与传统的关系数据库不同,它们要求你规范化你的数据。

因此,对于个人资料,您可能拥有一个用户,一组发票,一组地址等。在您决定数据模型时,我会建议以下内容:

  1. 考虑您的用户界面。如果您需要用户+个人资料+发票,请继续制作这样的文档。让您的生活更轻松。
  2. 不要害怕存储重复的信息。
  3. 您将不断想知道是否应该嵌入文档(向用户添加地址)或链接到文档(将引用列表放在引用发票的数组中)。我听说我认为很好的规则:如果数据不断变化,请建立链接/参考。如果它是不可变的或缓慢变化,请嵌入它。
  4. 如果您的文档会随着时间的推移而增长,请考虑将其分解。如果文档变得太大,Mongo必须将文档移动到内存中。