我的项目中有一个模块,在功能中,我有一个文本框,我在其中输入丢失的笔记并用按钮保存,但是保存数据的表中有一个外键,并且以下异常
我的代码如下
public ActionResult SetBreakageNote(int id, string MissNote, int charge)
{
var Rdetail = new ReservationDetail();
if (ModelState.IsValid)
{
Rdetail.ReservationID = id;
Rdetail.Description = MissNote;
Rdetail.ChargeType = charge;
db.Insert(Rdetail);
}
return RedirectToAction("Index");
}
我的观点
@model IEnumerable<RoomTypeView>
<div class="row">
@foreach (var item in Model)
{
<div class="col-3">
<div class="row">
<div class="col-8">
<div class="inventory my-1">
<textarea class="form-control breakage" placeholder="Enter Breakage Note" rows="1"></textarea>
</div>
</div>
<div class="col-4">
<button type="button" class="btn btn-default breakage" data-brid="@item.ReservationID"><i class="fa fa-file-invoice" style="color:red;"></i></button>
</div>
</div>
</div>
}
</div>
$('.breakage').click(function () {
$.post("@Url.Action("SetBreakageNote", "HouseKeeping")", { id: $(this).data('brid'), MissNote: $('.breakage').val(), charge: @((int)ChargeTypeEnum.Breakage) });
});
这是我得到的例外情况
INSERT语句与FOREIGN KEY约束“ FK_ReservationDetails_Reservation”冲突。数据库“ CavalaV3DB”的表“ dbo.Reservation”的列“ ReservationID
中发生了冲突
ReservationID是预留表的外键。
请帮助我
答案 0 :(得分:0)
您正在尝试在Rdetail
列的ReservationID
中插入一些值。但是Reservation
表中没有该值。
这违反了在Rdetail
表中创建的外键约束。
您可以通过在将数据插入表中之前进行检查来避免这种情况
if (ModelState.IsValid)
{
if(db.Reservation.where(a=>a.ReservationId==id).Amy()) //Condition to check if data is there or not
{
Rdetail.ReservationID = id;
Rdetail.Description = MissNote;
Rdetail.ChargeType = charge;
db.Insert(Rdetail);
}
}
答案 1 :(得分:0)
在插入数据之前,foreign key
字段中的值必须首先存在于另一个表中。您必须先构建包含Primary Key
的表,然后才能在下拉列表中填充它们首先需要选择要保存的数据。
在
foreign key
中处理other table's View
的最好方法是将它们绑定到下拉列表中并设置必需的属性