这是查询:
using (var db = new AppDbContext())
{
var item = new IdentityItem {Id = 418, Name = "Abrahadabra" };
db.IdentityItems.Add(item);
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items ON;");
db.SaveChanges();
}
执行时,Id
在新表上插入的记录的数量仍然是 1。
NEW:当我使用交易或 TGlatzer 的答案时,我得到了异常:
必须为表“Items”中的标识列指定显式值
当 IDENTITY_INSERT 设置为 ON 或复制用户
插入到 NOT FOR REPLICATION 标识列中。
根据之前的这个Question https://stackoverflow.com/questions/13086006/how-can-i-force-entity-framework-to-insert-identity-columns您需要开始您的上下文事务。保存更改后,您还必须重新声明“身份插入”列,最后您必须提交事务。
using (var db = new AppDbContext())
using (var transaction = db .Database.BeginTransaction())
{
var item = new IdentityItem {Id = 418, Name = "Abrahadabra" };
db.IdentityItems.Add(item);
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items ON;");
db.SaveChanges();
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT Test.Items OFF");
transaction.Commit();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)