【发布时间】:2016-10-06 16:00:35
【问题描述】:
我正在开发一个 ASP.NET MVC 5 项目,在该项目中我试图从 MVC 视图模型构建一个控制器。该 ViewModel 汇集了我需要在视图中显示的 6 个表。我的理解是,使用 MVC ViewModels 是在视图中显示多个表的一种方式。无论如何,我收到以下错误消息:
Error
There was an error running the selected code generator: 'Unable to retrieve metadata for
'PrismSmallTasks.ViewModels.ManageInterviewVM'. One of more validation errors were
detected during model generation:
ManageInterviewVM:: EntityType 'ManageInterviewVM' has no key defined.
Define the key for this EntityType.
ManageInterviewVMs: EntityType: EntitySet 'ManageInterviewsVMs' is based on
type 'ManageInterviewVM' that has no keys defined.
ManageInterviewVM ViewModel 中没有键。这是因为它由 VM 中的模型中表示的表的列表组成。而且这些模型类中的每一个确实都有一个为其定义了键的列。
例如,这里是 ManageInterviewVM:
public class ManageInterviewVM
{
public List<FieldRecord> FieldRecords { get; set; }
public List<TaskList> TaskLists { get; set; }
public List<InterviewARVTreatment> InterviewARVTreatments { get; set; }
public List<Note> Notes { get; set; }
public List<Risk> Risks { get; set; }
public List<Interview1> Interviews { get; set; }
}
下面是模型类中定义的其中一个表的部分列表:
public partial class TaskList
{
[Key]
public int ID_TaskList { get; set; }
[Required]
[StringLength(15)]
public string CD_TaskListType { get; set; }
public int? ID_Profile { get; set; }
public int? ID_FieldRecord { get; set; }
public int? ID_Interview { get; set; }
所以,我不知道我错过了什么。为什么会出现此错误以及如何解决?
【问题讨论】:
-
只需确保您的视图模型位于单独的文件夹中(例如
ViewModels),这样就不会与 EF 关联。 -
它们在一个单独的文件夹中。
-
然后你做的其他事情导致它被添加到你的数据库上下文中
标签: asp.net-mvc asp.net-mvc-viewmodel