Не могу вставить идентификационный столбец в EF, несмотря на то, что никогда не менял значение - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь обновить строку таблицы, используя EntityFramework, без изменения столбца идентификатора в моем коде . Почему до сих пор говорится, что я не могу вставить явное значение?

Невозможно вставить явное значение для столбца идентификаторов в таблице 'tblLicenseGroups', когда для IDENTITY_INSERT задано значение OFF.

МОЙ КОД

//mytbl context is initialized as _gc
var mymodel=_gc.mytbl.Where(x=>x.ID.ToString()=="1").FirstorDefault();
mymodel.otherfield=22;//sets a new value
_gc.Add(mymodel);
_gc.SaveChanges();

EF MODEL

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public int otherfield { get; set; }

SQL CREATE

CREATE TABLE [dbo].[tblLicenseGroups](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    ....
 CONSTRAINT [PK_tblSiteParentIDs] 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]
) ON [PRIMARY]
GO

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Если вы извлекли и изменили модель с тем же экземпляром DbContext, вам не нужно вызывать метод Add, просто .SaveChanges()

Обновление происходит автоматически, потому что EF отслеживает изменения, внесенные вами в объекты из базы данных.

0 голосов
/ 18 января 2019

Вы выбираете существующую запись и пытаетесь добавить ее снова.

Ошибка, которую вы получаете, возможно, связана с тем, что в вашей базе данных есть поле identity, а код [DatabaseGenerated(DatabaseGeneratedOption.Identity)] указывает на то, что это правда.

Возможно, вы захотите попробовать что-то такое:

 var mymodel=_gc.mytbl.Where(x=>x.ID.ToString()=="1").FirstorDefault();
 mymodel.ID = 0;
 _gc.Add(mymodel);
_gc.SaveChanges();

Приведенный выше код намеревается зарегистрировать модель как новую версию самой себя, что должно добавить новую запись в таблицу базы данных, точно такую ​​же, как первая, кроме идентификатора

Надеюсь, это поможет

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