【发布时间】:2019-06-12 22:38:52
【问题描述】:
我正在尝试使用 EntityFramework 更新表格行,不更改代码中的 ID 列。为什么它仍然告诉我我不能插入显式值?
当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'tblLicenseGroups' 中的标识列插入显式值。
我的代码
//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 模型
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int otherfield { get; set; }
SQL 创建
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
【问题讨论】:
-
您正在检索现有记录并再次添加它,就好像它是一条新记录一样。你想做什么?
-
因此您尝试插入具有不同 ID 的多个副本。 EF 可能会拦截需求并阻止您在它进入数据库之前执行它......为什么不使用存储过程来处理这种情况?
标签: c# entity-framework