生成控制器时,“视图模型”需要主键”错误

时间:2019-01-21 18:25:43

标签: c# asp.net-core

我有3个表,1个具有学生的主数据,1个是链接地址的查找表,第三个是家庭成员姓名的表。

我想创建一个页面来输入学生的详细信息,他们的地址和家庭成员。所以我创建了一个View模型类。

当我为该视图模型类生成Controller时,实体类型“ ViewModelClassName”要求弹出主键错误。

我是Web开发的新手。我处在没有人要问的情况下。请帮忙。谢谢。

public StudentMaster StudentMaster { get; set; }        
public StudentAddresses StudentAddresses { get; set; }
public StudentFamilyMembers StudentFamilyMembers { get; set; }

1 个答案:

答案 0 :(得分:0)

ASP.NET脚手架期望使用基于实体框架的数据模型类,以帮助您创建视图/控制器。但是您使用的是View Model,视图模型没有持久化在数据库中,并且它没有任何主键字段,因此无法进行搭建。而且,在使用脚手架向导时,您始终需要选择数据上下文。但是视图模型与您的数据上下文无关。

您应该使用实际的数据模型而不是视图模型来执行脚手架,然后修改代码以使用视图模型在视图和控制器之间传输数据

在控制器动作中,您可以将视图模型映射回要使用EF保留的数据模型。您可以使用AutoMapper在视图模型和数据模型之间进行映射。