Please help me with this: when I add new data, it will throw an error
SqlException: Violation of PRIMARY KEY constraint ‘PK__SaleOrde__C3905BAFABA6B181’. Cannot insert duplicate key in object ‘dbo.SaleOrder’. The duplicate key value is (0).
because the OrderID
doesn’t get automatically set.
Here it’s my code – controller:
using DoAnLTHDT.Models;
using DoAnLTHDT.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Services.Description;
namespace DoAnLTHDT.Controllers
{
public class MasterDetailController : Controller
{
private UserManageEntities objManageEntities;
public MasterDetailController()
{
objManageEntities = new UserManageEntities();
}
public ActionResult Index()
{
return View();
}
[HttpPost]
public JsonResult Index(SaleOrderViewModel objSaleOrderViewModel)
{
SaleOrder objSalesOrder = new SaleOrder();
objSalesOrder.AddressCus = objSaleOrderViewModel.AddressCus;
objSalesOrder.CustomerName = objSaleOrderViewModel.CustomerName;
objSalesOrder.OrderNumber = objSaleOrderViewModel.OrderNumber;
objManageEntities.SaleOrders.Add(objSalesOrder);
objManageEntities.SaveChanges();
objSalesOrder =
objManageEntities.SaleOrders.Single(model =>
model.OrderNumber == objSaleOrderViewModel.OrderNumber
);
foreach (var item in objSaleOrderViewModel.ListOfSaleOrderDetail)
{
SaleOrderDetail objSaleOrderDetail = new SaleOrderDetail();
objSaleOrderDetail.Discount = item.Discount;
objSaleOrderDetail.ItemName = item.ItemName;
objSaleOrderDetail.OrderID = objSalesOrder.OrderID;
objSaleOrderDetail.Quantity = item.Quantity;
objSaleOrderDetail.Total = item.SubTotal;
objSaleOrderDetail.UnitPrice = item.UnitPrice;
objManageEntities.SaleOrderDetails.Add(objSaleOrderDetail);
objManageEntities.SaveChanges();
}
return Json(data: new {Success = true, Message ="Data Add"}, JsonRequestBehavior.AllowGet);
}
}
}
Script ajax and jQuery
<script type="text/javascript">
$(document).ready(function () {
$("#btnDelete").hide();
});
function AddSaleOrderRow() {
$("#btnDelete").show();
var tblBody = $("#tblSaleOrderDetails").find("tbody");
var tblLastRow = tblBody.find("tr:last");
var tblClone = tblLastRow.clone().find("input[type=text]").val('').end();
tblLastRow.after(tblClone);
$("#btnDelete").hide();
};
function DeleteSaleOrderRow(btnDelete) {
$(btnDelete).closest("tr").remove();
CalculateSubTotal();
}
function ResetCustomerDetails() {
$("#txtCustomerName").val('');
$("#txtAddessCus").val('');
$("#txtOrderNumber").val('');
$("#txtTotal").val('');
var tblBody = $("#tblSaleOrderDetails").find("tbody");
tblBody.find('tr:gt(0)').remove();
tblBody.find("tr").each(function () {
$(this).find("input[type=text]").val('');
});
}
function CalculateSubTotal() {
var Total = 0.0;
var tblBody = $("#tblSaleOrderDetails").find("tbody");
tblBody.find("tr").each(function () {
var Quantity = $(this).find("td:eq(1) input[type=text]").val();
var UnitPrice = $(this).find("td:eq(2) input[type=text]").val();
var Discount = $(this).find("td:eq(3) input[type=text]").val();
var SubTotal = (Quantity * UnitPrice) - Discount;
Total = Total + SubTotal;
$(this).find("td:eq(4) input[type=text]").val(SubTotal)
$("#txtTotal").val(Total);
});
}
function SaveOrderDetails() {
ListOfSaleOrderDetail = [];
var tblBody = $("#tblSaleOrderDetails").find("tbody");
tblBody.find("tr").each(function () {
var ItemName = $(this).find("td:eq(1) input[type=text]").val();
var Quantity = $(this).find("td:eq(2) input[type=text]").val();
var UnitPrice = $(this).find("td:eq(3) input[type=text]").val();
var Discount = $(this).find("td:eq(4) input[type=text]").val();
var SubTotal = (Quantity * UnitPrice) - Discount;
ListOfSaleOrderDetail.push({
"ItemName": ItemName,
"Quantity": Quantity,
"UnitPrice": UnitPrice,
"Discount": Discount,
"SubTotal": SubTotal,
});
});
SaleOrderViewModel = {
"OrderNumber": $("#txtOrderNumber").val(),
"CustomerName": $("#txtCustomerName").val(),
"AddressCus": $("#txtAddressCus").val(),
"ListOfSaleOrderDetail": ListOfSaleOrderDetail
};
$.ajax({
async: true,
type: 'POST',
dataType: 'JSON',
url: '/MasterDetail/Index',
data: JSON.stringify(SaleOrderViewModel),
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data.success) {
alert(data.Message);
ResetCustomerDetails()
}
else {
alert(data.Message);
}
},
error: function (data) {
alert("loi");
}
});
}
</script>
New contributor
Văn Toàn 37-Nguyễn is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1