有时,我需要插入特定 ID 作为要添加到数据中的实体的主键。在经典的 MS SQL 中,您可以通过在调用语句SET IDENTITY_INSERT tablename ON
之前调用来执行此操作。INSERT INTO
我似乎无法找到使用 EF 4.1 Code First 的方法来做同样的事情。
Dim specificIdRecord As New Record() With {
.RecordID = 25,
'other settings here
}
myDbContext.Records.Add(specificIdRecord)
myDbContext.SaveChanges()
specificIdRecord.RecordID '<== this does not always equal 25!
也没有抛出错误告诉我它忽略了我的 RecordID 并自动生成一个。
注意:我不想修改我的模型或修改我的上下文,因为这仅适用于偶尔的插入操作。此外,我确实看到了一种可能的解决方案,ExecuteStoreCommand
用于手动设置IDENTITY_INSERT
插入运行之前和之后,但这将需要三个事务 AFAIK,我希望 EF 将这一切打包成一个。