Ошибка при удалении записи: свойство '<PropertyName>' является частью ключевой информации объекта и не может быть изменено - PullRequest
0 голосов
/ 28 октября 2019

Я сталкиваюсь с ошибкой при удалении записи из таблицы базы данных с использованием структуры сущностей v4.0.30319.

Сценарий: Я вставляю запись в таблицу и на основе записейв некоторых других таблицах мне, возможно, придется удалить вставленную мной запись. Это происходит за один вызов из пользовательского интерфейса.

Код для вставки записи

        public MytableEntityClass AddRecord(DTODATA data)
        {
            var addTableData = new MytableEntityClass
            {
                Name = data.name,
                value = data.value,
                Active = "Y"
            };

            _context.MyTable.Add(addTableData);
            _context.SaveChanges();

            return addTableData;
        }

Чтобы удалить запись, я использую тот же объект, который имеетбыл возвращен функцией AddRecord.

Код для удаления записи

        public int DeleteRecord(MytableEntityClass data)
        {
            _context.MyTable.Remove(data);
            _context.SaveChanges();
            return 0;
        }

Класс сущности

    [Table(SOMETABLE)]
    public class MytableEntityClass
    {
        [Column("ID"), Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [Column("Name")]
        public string Name { get; set; }

        [Column("Value")]
        public int value { get; set; }

        [Column("Active")]
        public string Active { get; set; }
    }

Таблица базы данных

    CREATE TABLE SOMETABLE(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NULL,
    [Value] [int] NULL,
    [active] [char](1) NOT NULL,
 CONSTRAINT [tbl_PK] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
 CONSTRAINT [tbl_UK] UNIQUE NONCLUSTERED 
(
    [Name] ASC,
    [Value] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

При _context.MyTable.Remove (data) я сталкиваюсь с ошибкой ниже: Свойство 'Id' является частью ключевой информации объекта и не может бытьизменено.

Я прочитал различные темы, связанные с ошибкой, но все говорят, что в базе данных должен быть первичный ключ, и в вашем классе сущностей вам необходимо сослаться на него. Я делаю оба, но все же я получаю эту ошибку.

Пожалуйста, посоветуйте, что мне не хватает и как ее устранить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...