Jasbeer Singh
Jasbeer Singh

Reputation: 37

Error while Inserting data in loop pne by one using Entity Framework

while inserting records in a loop The property "id" is part of the object's key information and cannot be modified

 secProductionRepository.Add(tblSecProduction);
 this.SaveChanges();

CODE

Controller : This is the Controller code from where i am calling method of Repository . Adding data into repository and calling function to insert. i think i have to initialize it every time with new keyword. But where should i do that.

SingleMaster objGetXMLData = _iSingleService.GetXMLData();
if (objGetXMLData._tblSecDoorXMLData != null)
{
    for (int totalCount = 0; totalCount < objGetXMLData._tblSecDoorXMLData.Count; totalCount++)
    {
        _tblSecDoorsProduction.txtTongue = singleDoorModel.txtTongue;
        _tblSecDoorsProduction.numFibMesh = Convert.ToInt32(singleDoorModel.chkBoxFibreMesh);
        _tblSecDoorsProduction.dteDesDate = DateTime.Now;
        _iSingleDoorService.UpdatetblSecDoorsProduction(_tblSecDoorsProduction, "Insert");
    }
}

Repository : Here i am inserting new row into the table

public void UpdatetblSecDoorsProduction(tblSecDoorsProduction  tblSecDoorsProduction, string Message)
{
    var secDoorsProductionRepository =   Nuow.Repository<tblSecDoorsProduction>();
    tblSecDoorsProduction alreadyAttached = null;
    if (Message == "Insert")
    {
        secDoorsProductionRepository.Add(tblSecDoorsProduction);
        Nuow.SaveChanges();
    }
}

Upvotes: 0

Views: 125

Answers (1)

Dawid Rutkowski
Dawid Rutkowski

Reputation: 2756

Create new object each time in the loop. Updated code here:

for (int totalCount = 0; totalCount < objGetXMLData._tblSecDoorXMLData.Count; totalCount++)
{
    tblSecDoorsProduction _tblSecDoorsProduction = new tblSecDoorsProduction();
    _tblSecDoorsProduction.txtTongue = singleDoorModel.txtTongue;
    _tblSecDoorsProduction.numFibMesh = Convert.ToInt32(singleDoorModel.chkBoxFibreMesh);
    _tblSecDoorsProduction.dteDesDate = DateTime.Now;
    _iSingleDoorService.UpdatetblSecDoorsProduction(_tblSecDoorsProduction, "Insert");
}

Upvotes: 1

Related Questions