我在使用SQLite和EntityFramework时遇到问题。 我的实体类具有一个Id属性,该属性映射到也是PK的身份列。通过
将新的实体模型对象插入数据库时_dbContext.Images.Add(imageEntity);
_dbContext.SaveChanges();
然后它将始终插入 imageEntity.Id = 0 的对象,因为int默认为0。有一个属性 [NotMapped] 并不是我所需要的,它用于当您的实体类中具有表中不存在的其他属性时。我的表中有我的,我只是不想写它,数据库应该照顾这个。
我想让EF在幕后产生这样的声明:
insert into Images (Views, Rating) values (100, 5.5)
代替此:
insert into Images (Id, Views, Rating) values (0, 100, 5.5)
有人知道怎么做吗?
后面的insert语句也可以工作(如果已经没有Id = 0条目),但是为什么呢?不应始终保护Identity列免受外部值插入?
更新:
作为一种解决方法,我试图让EF这样为我创建一个新的实体模型
var temp = _dbContext.Images.Create();
我想也许以后我将能够替换除Id值之外的所有内容并将其保存到数据库,但是我得到的再次是一个temp.Id = 0
对象。我不知道EF还是SQLite在骗我
答案 0 :(得分:0)
您可以尝试:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
作为属性的属性。 剩下的责任是在插入到db时生成值