1 回答
TA贡献1875条经验 获得超3个赞
对于这种情况,您有 2 种解决方案。
解决方案 1:编写一个 SQL 语句,无需通过 UnitOfWork 即可直接更新您的数据库。我不推荐这种方式,因为这种情况并没有那么特殊。你的 UnitOfWork应该处理这个。
解决方案2:
第 1 步:在您的 UnitOfWork 中尝试获取新添加的汽车 ID。
第 2 步:使用您的汽车 ID 更新您的 Booking 对象。
示例代码:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateBooking([DataSourceRequest] DataSourceRequest request, Car car, Booking booking, CarBookings vm)
{
int carId = unitOfWork.CarRepository.Update(car);
booking.Car_Id = carId;
unitOfWork.BookingRepository.Update(booking);
unitOfWork.Save();
return Json(new[] { vm }.ToDataSourceResult(request, ModelState));
}
由于您问我如何仅更新已更改的数据。我会给你步骤来做到这一点。
第 1 步:从 UnitOfWork 中获取对象。
第 2 步:更新已更新的属性。
示例代码:在此示例中,updateBooking 是仅包含要更新的字段(具有新值的字段)的对象,如果其字段可以为空,则 bookInDb 是当前数据库中的对象(包含旧值)。
public void UpdateBooking(Booking updatingBooking)
{
**INIT UNIT OF WORK**
Booking bookingInDb=unitOfWork.BookingRepository.Find(updatingBooking.Id);
//updatingBooking.Id might be null, you need to pass the Id of the row you want to update
bookingInDb.BookingStart=updatingBooking.BookingStart;
//We update only BookingStart but not BookingEnd or Car_Id
unitOfWork.BookingRepository.Update(bookingInDb);
unitOfWork.Save();
}
- 1 回答
- 0 关注
- 221 浏览
添加回答
举报