【发布时间】:2021-06-11 19:24:24
【问题描述】:
我构建一个简单的项目只是为了自学,我有一个小问题。 我正在使用 Visual Studio 和实体框架。
我构建了一个 ASP.NET MVC 5 应用程序,其中包含 CRUD 功能。 在数据库中是 2 个表之间的连接,例如 on screenshot
来自 CarController 的 HTTP POST 波纹管
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Save(Car car)
{
if (!ModelState.IsValid)
{
var viewModel = new CarFormViewModel()
{
Cars = car,
CarTypeModels = _context.CarTypeModels.ToList()
};
return View("CarForm", viewModel);
}
if (car.Id == 0)
_context.Cars.Add(car);
else
{
var customerInDb = _context.Cars.Single(c => c.Id == car.Id);
customerInDb.Name = car.Name;
customerInDb.HorsePower = car.HorsePower;
customerInDb.LinkToImage = car.LinkToImage;
customerInDb.CarTypeModelId = car.CarTypeModelId;
}
_context.SaveChanges();
return RedirectToAction("Index", "Car");
}
我收到一个错误error
Db.CarTypeModel ->
CREATE TABLE [dbo].[CarTypeModels] (
[Id] TINYINT NOT NULL,
[Name] NVARCHAR (MAX) NULL,
CONSTRAINT [PK_dbo.CarTypeModels] PRIMARY KEY CLUSTERED ([Id] ASC));
db.Car ->
CREATE TABLE [dbo].[Cars] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (255) NULL,
[HorsePower] INT NOT NULL,
[LinkToImage] NVARCHAR (MAX) NULL,
[CarTypeModelId] TINYINT DEFAULT ((0)) NOT NULL,
CONSTRAINT [PK_dbo.Cars] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_dbo.Cars_dbo.CarTypeModels_CarTypeModelId] FOREIGN KEY ([CarTypeModelId]) REFERENCES [dbo].[CarTypeModels] ([Id]) ON DELETE CASCADE); GO CREATE NONCLUSTERED INDEX [IX_CarTypeModelId] ON [dbo].[Cars]([CarTypeModelId] ASC);
以及使用 CarTypeModelId 的 CarForm 代码
<div class="form-group">
@Html.LabelFor(m => m.Cars.CarTypeModelId)
@Html.DropDownListFor(m => m.Cars.CarTypeModelId, new SelectList(Model.CarTypeModels, "ID", "Name"), "Select car type", new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Cars.CarTypeModelId)
</div>
我有 API 连接并且它工作正常。我认为问题出在 CarController 但我真的不知道在哪里......
//POST /api/cars
[HttpPost]
public IHttpActionResult CreateCar(CarDto carDto)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
var car = Mapper.Map<CarDto, Car>(carDto);
_context.Cars.Add(car);
_context.SaveChanges();
carDto.Id = car.Id;
return Created(new Uri(Request.RequestUri + "/" + car.Id), carDto);
}
【问题讨论】:
标签: c# asp.net-mvc database entity-framework