C# 在一个文档中创建多个实体

C# 在一个文档中创建多个实体,c#,asp.net-mvc,ravendb,C#,Asp.net Mvc,Ravendb,新手,使用MVC和文档数据库。我有一节电影课 public class Movie { public string Id { get; set; } public string MovieName { get; set; } public DateTime ReleaseDate{ get; set; } public int NumOfShows { get; set; } } 现在我正在Raven DB中创建文档,每部电影一个文档。看起来像这样。它从MV

新手,使用MVC和文档数据库。我有一节电影课

public class Movie
{
    public string Id { get; set; }
    public string MovieName { get; set; }
    public DateTime ReleaseDate{ get; set; }
    public int NumOfShows { get; set; }  
}
现在我正在Raven DB中创建文档,每部电影一个文档。看起来像这样。它从MVC页面更新。从MVC应用程序到Raven,我已经成功地做到了这一点

{
   "MovieName": "Wild wild west",
   "ReleaseDate": "12th Dec",
   "NumOfShows ": "5"    
}
但这不是我的目标。。我的目标是为一部电影创建一个文档,其中包含多个电影信息。看起来像这样的东西

 {
    "TheaterId": "Hd45",
    "TheaterName" : "Blvd",

    {
      "MovieName": "Wild wild west",
      "ReleaseDate": "12th Dec",
      "NumOfShows ": "5"    
    }
    {
      "MovieName": "Shrek",
      "ReleaseDate": "12th Dec",
      "NumOfShows ": "5"    
    }
    {
      "MovieName": "Ronin",
      "ReleaseDate": "12th Dec",
      "NumOfShows ": "5"    
    }
 }
我怎样才能做到这一点1.非常感谢您的帮助。详细的解释对我的理解很有帮助

更新:

[HttpPost]
public ActionResult Create(TheaterViewModel input)
{
    var Theater = new Theater
    {
        TheaterId = input.Theater.TheaterId,
        TheaterName = input.Theater.TheaterName,
      // How do I get the Movies nested here, I mean updated 

    };
    _repository.Add(Theater);
    _repository.Save();

}
你可以试试这个:

public class MovieTheater
{
    public string Id { get; set; }
    public string Name { get; set; }

    public List<Movie> MoviesOnShow { get; set; }
}

public class Movie
{
    public string Name { get; set; }
    public DateTime ReleaseDate { get; set; }
    public int NumOfShows { get; set; }
}
公共级电影
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共列表电影放映{get;set;}
}
公映
{
公共字符串名称{get;set;}
公共日期时间释放日期{get;set;}
public int NumOfShows{get;set;}
}
这里,
movietweater
将是您的聚合根,即从数据库加载/保存并直接使用的部分

祝你好运

您可以尝试以下方法:

public class MovieTheater
{
    public string Id { get; set; }
    public string Name { get; set; }

    public List<Movie> MoviesOnShow { get; set; }
}

public class Movie
{
    public string Name { get; set; }
    public DateTime ReleaseDate { get; set; }
    public int NumOfShows { get; set; }
}
公共级电影
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共列表电影放映{get;set;}
}
公映
{
公共字符串名称{get;set;}
公共日期时间释放日期{get;set;}
public int NumOfShows{get;set;}
}
这里,
movietweater
将是您的聚合根,即从数据库加载/保存并直接使用的部分


祝你好运

TheaterViewModel中应该有一组电影,如下所示:

Public List<Movie> Movies {get; set;}

TheaterViewModel中应该包含一组电影,如下所示:

Public List<Movie> Movies {get; set;}

正确的方法是使用非规范化引用:


正确的方法是使用非规范化引用:


在MVC结构中,这两个类是属于一个模型还是属于单独的模型。这些类可以代表您的模型。如果要在视图中显示此视图,通常会将其映射到专用视图模型,然后显示视图模型。有一个名为AutoMapper的库正用于此目的(模型和视图模型之间的映射)。Lidstrom:请参阅上面的评论,以获取原始帖子中的编辑。。。如何在上面的代码中添加电影数据时一个接一个地嵌套电影数据..您可以通过一个操作创建剧院。然后,您可以执行另一个操作,将电影添加到影院。这有意义吗?当你更新电影时会发生什么?您要更新同一文档的所有不同版本吗?在MVC结构中,这两个类是属于一个模型还是单独的模型。这些类可以代表您的模型。如果要在视图中显示此视图,通常会将其映射到专用视图模型,然后显示视图模型。有一个名为AutoMapper的库正用于此目的(模型和视图模型之间的映射)。Lidstrom:请参阅上面的评论,以获取原始帖子中的编辑。。。如何在上面的代码中添加电影数据时一个接一个地嵌套电影数据..您可以通过一个操作创建剧院。然后,您可以执行另一个操作,将电影添加到影院。这有意义吗?当你更新电影时会发生什么?你打算更新同一文档的所有不同版本吗?不错,我不知道这是可能的。不错,我不知道这是可能的。但我一次只添加一部电影。。为什么我需要做一个foreach?但是我一次只添加一个电影。。为什么我需要做一个foreach?