У меня проблема с SQLite и EntityFramework.
Мой класс сущности имеет свойство Id, которое отображается в столбец идентификаторов, который также является PK. Когда я вставляю новый объект модели сущности в свою БД через
_dbContext.Images.Add(imageEntity);
_dbContext.SaveChanges();
, тогда он всегда будет вставлять объект с imageEntity.Id = 0 , потому что 0 по умолчанию для int. Есть атрибут [NotMapped] , который мне не нужен, он нужен, когда в вашем классе сущности есть дополнительное свойство, которого нет в таблице. В таблице есть моя, я просто не хочу ее писать, об этом должна позаботиться БД.
Я бы хотел сделать EF за кадром, чтобы сделать такое утверждение:
insert into Images (Views, Rating) values (100, 5.5)
вместо этого:
insert into Images (Id, Views, Rating) values (0, 100, 5.5)
Кто-нибудь знает, как это сделать?
Также работает последний оператор вставки (если записи Id = 0 уже нет), но почему? Разве столбец идентификаторов не должен всегда защищаться от вставки внешних значений?
UPDATE:
В качестве обходного пути я попытался позволить EF создать для меня новую модель сущности, например,
var temp = _dbContext.Images.Create();
Я подумал, что, возможно, тогда я смогу заменить все, кроме значения Id, и сохранить его в БД, но я снова получу объект с temp.Id = 0
. Я не знаю, дурачит ли меня EF или SQLite