Я хочу обновить данные sql на gridview asp.net mvc - PullRequest
0 голосов
/ 27 марта 2019

Я получаю эту ошибку:

Изменено значение элемента 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...