属性 id是对象关键信息的一部分,不可修改
the property id is part of the object's key information and cannot be modified
当我尝试使用 EF 更新数据时出现类似
的错误
the property id is part of the object's key information and cannot be
modified
这是 wınForm 应用程序
你可以在这里看到我的更新方法
区域更新
try
{
_truck.plateNumber= txtplateNumber.Text;
_truck.brand = txtMarka.Text;
_truck.model = txtModel.Text;
_truck.type = txtTipi.Text;
_truck.registrationDate = dtregistrationDate.Value;
_truck.examinationDate = dtexaminationDate.Value;
_truck.Description = txtDescription.Text;
_truck.driverName = txtdriverName.Text;
_truck.weight= txtweight.Text;
_truck.Id = Convert.ToInt32(txtplateNumber.Tag);
_truck.userId = Tools.Tools.getUserId();
#region update
currentItem = cr.getbyId(Convert.ToInt32(txtplateNumber.Tag.ToString())).plateNumber;
if (currentItem != null)
{
if (!currentItem.Equals(txtplateNumber.Text))
{
if (!cr.isPlateAlreadyExist(txtplateNumber.Text))
{
DialogResult result = MessageBox.Show("Are you sure want to update to Truck?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
if (!string.IsNullOrEmpty(this.pbLicence.ImageLocation))
{
_truck.licencePicture = Tools.Tools.convertToByteFfromImageF(pbLicence.Image);
if (!cr.getbyId(Convert.ToInt32(txtplateNumber.Tag)).hasPicture)
{
_truck.hasPicture = true;
cr.Update(_truck);
}
}
cr.Update(_truck);
MessageBox.Show("Successfuly");
}
else
{
MessageBox.Show("The process was Cancel !", "Canceled", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("The plate number is already Exists.", "Same Plate Number", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}
else
{
DialogResult result = MessageBox.Show("Are you sure want to update to Truck?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
if (!string.IsNullOrEmpty(this.pbLicence.ImageLocation))
{
_truck.licencePicture = Tools.Tools.convertToByteFfromImageF(this.pbLicence.Image);
if (!cr.getbyId(Convert.ToInt32(txtplateNumber.Tag)).hasPicture)
{
_truck.hasPicture = true;
cr.Update(_truck);
}
}
cr.Update(_truck);
MessageBox.Show("SuccessFully");
}
}
#endregion
}
else
{
MessageBox.Show("You did not select an Item","Warning");
}
}
catch (Exception ex)
{
MessageBox.Show("Error:" + ex.Message, "Error");
}
finally
{
getUpdatedList();
Tools.Tools.clearAllFormControlsContent(pickTruckControls());
}
#endregion
------版本库更新方法----------
public int Update(Truck item)
{
Truck updated = db.Trucks.Where(x => x.Id == item.Id).FirstOrDefault();
db.Entry(updated).CurrentValues.SetValues(item);
return db.SaveChanges();
}
您收到的错误消息是准确的——您正在设置 _truck.Id 属性,按照惯例,它是 Entity Framework 使用的主要 key/identity 字段.如果您使用的是 EF Code First,您可能只想将另一个字段添加到您的数据库和数据模型中,以保存 txtplateNumber.Tag 值。无论哪种方式,您都需要删除将该值设置为 _truck.Id.
的代码
当我尝试使用 EF 更新数据时出现类似
的错误the property id is part of the object's key information and cannot be modified
这是 wınForm 应用程序 你可以在这里看到我的更新方法
区域更新
try
{
_truck.plateNumber= txtplateNumber.Text;
_truck.brand = txtMarka.Text;
_truck.model = txtModel.Text;
_truck.type = txtTipi.Text;
_truck.registrationDate = dtregistrationDate.Value;
_truck.examinationDate = dtexaminationDate.Value;
_truck.Description = txtDescription.Text;
_truck.driverName = txtdriverName.Text;
_truck.weight= txtweight.Text;
_truck.Id = Convert.ToInt32(txtplateNumber.Tag);
_truck.userId = Tools.Tools.getUserId();
#region update
currentItem = cr.getbyId(Convert.ToInt32(txtplateNumber.Tag.ToString())).plateNumber;
if (currentItem != null)
{
if (!currentItem.Equals(txtplateNumber.Text))
{
if (!cr.isPlateAlreadyExist(txtplateNumber.Text))
{
DialogResult result = MessageBox.Show("Are you sure want to update to Truck?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
if (!string.IsNullOrEmpty(this.pbLicence.ImageLocation))
{
_truck.licencePicture = Tools.Tools.convertToByteFfromImageF(pbLicence.Image);
if (!cr.getbyId(Convert.ToInt32(txtplateNumber.Tag)).hasPicture)
{
_truck.hasPicture = true;
cr.Update(_truck);
}
}
cr.Update(_truck);
MessageBox.Show("Successfuly");
}
else
{
MessageBox.Show("The process was Cancel !", "Canceled", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("The plate number is already Exists.", "Same Plate Number", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}
else
{
DialogResult result = MessageBox.Show("Are you sure want to update to Truck?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
if (!string.IsNullOrEmpty(this.pbLicence.ImageLocation))
{
_truck.licencePicture = Tools.Tools.convertToByteFfromImageF(this.pbLicence.Image);
if (!cr.getbyId(Convert.ToInt32(txtplateNumber.Tag)).hasPicture)
{
_truck.hasPicture = true;
cr.Update(_truck);
}
}
cr.Update(_truck);
MessageBox.Show("SuccessFully");
}
}
#endregion
}
else
{
MessageBox.Show("You did not select an Item","Warning");
}
}
catch (Exception ex)
{
MessageBox.Show("Error:" + ex.Message, "Error");
}
finally
{
getUpdatedList();
Tools.Tools.clearAllFormControlsContent(pickTruckControls());
}
#endregion
------版本库更新方法----------
public int Update(Truck item)
{
Truck updated = db.Trucks.Where(x => x.Id == item.Id).FirstOrDefault();
db.Entry(updated).CurrentValues.SetValues(item);
return db.SaveChanges();
}
您收到的错误消息是准确的——您正在设置 _truck.Id 属性,按照惯例,它是 Entity Framework 使用的主要 key/identity 字段.如果您使用的是 EF Code First,您可能只想将另一个字段添加到您的数据库和数据模型中,以保存 txtplateNumber.Tag 值。无论哪种方式,您都需要删除将该值设置为 _truck.Id.
的代码