C# InvalidOperationException:实体类型';PassengerViewModel';找不到。确保已将实体类型添加到模型中

C# InvalidOperationException:实体类型';PassengerViewModel';找不到。确保已将实体类型添加到模型中,c#,asp.net-core,asp.net-core-mvc,viewmodel,C#,Asp.net Core,Asp.net Core Mvc,Viewmodel,所以我试图让我的MVC网站使用ViewModels,而不是直接使用数据 正如标题所说,我遇到了一个异常,这是在我按下create按钮添加新数据后发生的 我将列出我现在正在使用的代码片段 这是控制器中的创建操作 [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("Id,Surname,FirstName,Email")] PassengerViewModel passe

所以我试图让我的MVC网站使用ViewModels,而不是直接使用数据

正如标题所说,我遇到了一个异常,这是在我按下create按钮添加新数据后发生的

我将列出我现在正在使用的代码片段

这是控制器中的创建操作

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Surname,FirstName,Email")] PassengerViewModel passenger)
{
    if (ModelState.IsValid)
    {
        _context.Add(passenger);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }

    return View(passenger);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建([Bind(“Id,姓氏,名字,电子邮件”)]PassengerViewModel乘客)
{
if(ModelState.IsValid)
{
_上下文。添加(乘客);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(索引));
}
返回视图(乘客);
}
创建页面是VisualStudio为我创建的普通创建页面。我对它所做的唯一更改是不使用模型数据。模型引用了我的ViewModel

然后是迁移类。代码如下:

migrationBuilder.CreateTable(
                name: "Passengers",
                schema: "WebSite",
                columns: table => new
                {
                    Id = table.Column<int>(nullable: false)
                        .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
                    Surname = table.Column<string>(nullable: false),
                    FirstName = table.Column<string>(nullable: false),
                    Email = table.Column<string>(nullable: false)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_Passengers", x => x.Id);
                });
migrationBuilder.CreateTable(
姓名:“乘客”,
架构:“网站”,
列:表=>new
{
Id=table.Column(可空:false)
.Annotation(“SqlServer:ValueGenerationStrategy”,SqlServerValueGenerationStrategy.IdentityColumn),
姓氏=table.Column(可空:false),
FirstName=table.Column(可空:false),
Email=table.Column(可空:false)
},
约束:表=>
{
表.PrimaryKey(“PK_乘客”,x=>x.Id);
});

任何帮助或指导都将不胜感激。

创建实体实例,复制模型值,然后将其(实体)添加到
DbContext

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Surname,FirstName,Email")] PassengerViewModel model)
{
    if (ModelState.IsValid)
    {
        Passenger passenger = new Passenger
        {
            Id = model.Id,
            FirstName = model.FirstName,
            Email = model.Email
        };
        await _context.Passengers.AddAsync(passenger);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }

    return View(passenger);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建([Bind(“Id,姓氏,名字,电子邮件”)]PassengerViewModel模型)
{
if(ModelState.IsValid)
{
乘客=新乘客
{
Id=model.Id,
FirstName=model.FirstName,
Email=model.Email
};
wait_context.Passengers.AddAsync(passenger);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(索引));
}
返回视图(乘客);
}

创建实体实例,复制模型值,然后将其(实体)添加到
DbContext

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Surname,FirstName,Email")] PassengerViewModel model)
{
    if (ModelState.IsValid)
    {
        Passenger passenger = new Passenger
        {
            Id = model.Id,
            FirstName = model.FirstName,
            Email = model.Email
        };
        await _context.Passengers.AddAsync(passenger);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }

    return View(passenger);
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务创建([Bind(“Id,姓氏,名字,电子邮件”)]PassengerViewModel模型)
{
if(ModelState.IsValid)
{
乘客=新乘客
{
Id=model.Id,
FirstName=model.FirstName,
Email=model.Email
};
wait_context.Passengers.AddAsync(passenger);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(索引));
}
返回视图(乘客);
}