InvalidOperationException:找不到实体类型 'PassengerViewModel'。确保实体类型已添加到模型中
InvalidOperationException: The entity type 'PassengerViewModel' was not found. Ensure that the entity type has been added to the model
所以我正在尝试让我的 MVC 网站使用 ViewModels 而不是直接使用数据。
正如标题所说,我遇到了异常,这是在我按下创建按钮添加新数据后发生的。
我将列出我现在正在使用的代码片段。
这是Controller中的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);
}
创建页面是 visual studio 为我创建的普通创建页面。我对它所做的唯一更改是不使用模型数据。该模型指的是我的 ViewModel。
然后在迁移class。代码是这样的:
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);
});
如有任何帮助或指导,我们将不胜感激。
创建实体实例,复制模型值,然后将其(实体)添加到 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);
}
所以我正在尝试让我的 MVC 网站使用 ViewModels 而不是直接使用数据。
正如标题所说,我遇到了异常,这是在我按下创建按钮添加新数据后发生的。
我将列出我现在正在使用的代码片段。
这是Controller中的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);
}
创建页面是 visual studio 为我创建的普通创建页面。我对它所做的唯一更改是不使用模型数据。该模型指的是我的 ViewModel。
然后在迁移class。代码是这样的:
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);
});
如有任何帮助或指导,我们将不胜感激。
创建实体实例,复制模型值,然后将其(实体)添加到 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);
}