C# 创建引用其他两个模型的模型

C# 创建引用其他两个模型的模型,c#,model-view-controller,mvvm,asp.net-mvc-5,code-first,C#,Model View Controller,Mvvm,Asp.net Mvc 5,Code First,我正在使用ASP.NET MVC5,并遵循应用程序的代码优先开发方法 我很难理解在这种情况下采取什么样的最佳行动。我有默认的ASP.NET应用程序用户模型,并且创建了一个事件模型。应用程序用户可以有多个事件。我想创建一个概要页面,它从应用程序用户模型和事件模型中提取数据。通过阅读一堆不同的帖子,我似乎要创建一个ViewModel?这有点令人困惑,因为这意味着我混合了MVVM和MVC的元素 这是最好的做法吗?对我来说,创建一个将这些项组合在一起的新模型是没有意义的,除了“代码优先”方法之外,还为这

我正在使用ASP.NET MVC5,并遵循应用程序的代码优先开发方法

我很难理解在这种情况下采取什么样的最佳行动。我有默认的ASP.NET应用程序用户模型,并且创建了一个事件模型。应用程序用户可以有多个事件。我想创建一个概要页面,它从应用程序用户模型和事件模型中提取数据。通过阅读一堆不同的帖子,我似乎要创建一个ViewModel?这有点令人困惑,因为这意味着我混合了MVVM和MVC的元素


这是最好的做法吗?对我来说,创建一个将这些项组合在一起的新模型是没有意义的,除了“代码优先”方法之外,还为这个模型创建了一个新表,这是我不希望发生的。

视图模型是MVC的正确方法。所有视图都应基于视图模型,而不是数据模型。它将包含(至少)属性
用户用户
IEnumerable事件
(但最好是
用户视图模型用户
IEnumerable事件
)。您可以在控制器中初始化它,用数据模型中的数据填充它,然后将其返回到视图。不知道为什么你认为需要一张“新桌子”?我担心的是,如果我创建了一个新的模型来连接这些元素用户和事件,那么代码优先迁移将创建一个新表。我想,潜在的问题是:如果我创建这个ViewModel类,我如何从相应的模型(用户和事件)中找到合适的元素。在应用程序(比如)ViewModels中为这些类创建一个单独的文件夹。在中的控制器中,可能类似于,
var model=new UserEventModel();model.User=db.Users.Find(ID);model.Events=db.Events.Where(e=>e.UserId=ID);返回视图(模型)
好的,现在开始有意义了。让我把它弄得乱七八糟,看看能不能把它弄好。谢谢你,斯蒂芬@ChrisRiv91这是关于如何使用viewModels的一个很好的解释。正如Stephen所提到的,这是最好的方法,至少将类添加到DbContext中不会改变迁移。