Я получаю эту ошибку:
Изменено значение элемента LabTestTypeId объекта типа LabTestType.
Член, определяющий идентичность объекта, не может быть изменен.
Попробуйте добавить новый объект с новым идентификатором и удалить вместо него существующий.
Примечание: эта ошибка не произошла для первой строки вида сетки
Определение таблицы SQL:
CREATE TABLE [dbo].[LabTestType](
[LabTestTypeId] [int] IDENTITY(1,1) NOT NULL,
[LabTypeId] [int] NOT NULL,
[StudId] [nvarchar](50) NULL,
[LabTestTypeDescription] [nvarchar](max) NULL,
[Status] [bit] NULL,
CONSTRAINT [PK_LabTestType] PRIMARY KEY CLUSTERED
(
[LabTestTypeId] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[LabTestType] WITH CHECK ADD CONSTRAINT [FK_LabTestType_LabTestType] FOREIGN KEY([LabTestTypeId])
REFERENCES [dbo].[LabTestType] ([LabTestTypeId])
GO
ALTER TABLE [dbo].[LabTestType] CHECK CONSTRAINT [FK_LabTestType_LabTestType]
GO
ALTER TABLE [dbo].[LabTestType] WITH CHECK ADD CONSTRAINT [FK_LabTestType_labtype] FOREIGN KEY([LabTypeId])
REFERENCES [dbo].[labtype] ([LabTypeId])
GO
ALTER TABLE [dbo].[LabTestType] CHECK CONSTRAINT [FK_LabTestType_labtype]
GO
Действие контроллера MVC для обновления:
public ActionResult labGridViewPartialUpdate(clinic1.Models.LabTestType item,int key)
{
var model = db.LabTestTypes.Where(i=>i.StudId==key.ToString());
ViewBag.LabTypeId = db.labtypes.ToList();
ViewData["labkey"] = key;
if (ModelState.IsValid)
{
try
{
item.StudId = key.ToString();
// model.InsertOnSubmit(item);
// db.SubmitChanges();
var modelItem = model.FirstOrDefault(it => it.StudId == it.StudId);
if (modelItem != null)
{
this.UpdateModel(modelItem);
db.SubmitChanges();
}
}
catch (Exception e)
{
ViewData["EditError"] = e.Message;
}
}
else
{
ViewData["EditError"] = "Please, correct all errors.";
}
var querymodel = db.LabTestTypes.Where(it => it.StudId == key.ToString());
return PartialView("_labGridViewPartial", querymodel);
}