【发布时间】:2015-11-27 06:22:34
【问题描述】:
我想将记录批量添加到具有给定 ID 的表中,这样我就可以构建一个层次结构来以树视图的方式显示记录。我可以单独添加运行良好的记录并且我不设置 ID。我只想批量设置 Id,所以我在我的实体的 id 列中将DatabaseGenerated 选项设置为None 为None。
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
foreach (ErrorCode ec in errorCodesStep3.errorcodesUsers)
{
errorCode.ID = ec.ID;
errorCode.ParentID = ec.ParentID;
errorCode.ErrorDescription = ec.ErrorDescription;
db.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.ErrorCode ON");
db.ErrorCode.Add(errorCode);
db.SaveChanges();
scope.Complete();
}
}
错误代码
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ID { get; set; }
我收到以下错误:
身份插入关闭时无法设置身份。
不知道出了什么问题,因为我看到了可以打开身份插入的示例。我正在使用 EF 版本 4.2.0.0 和运行时版本 v4.0.30319。我可以通过executeSQL 轻松添加带有参数化变量的INSERT 语句,但我想使用实体框架来完成。似乎db.Database.ExecuteSqlCommand 在一个单独的范围内,它立即关闭并且在执行db.savechanged 时不可用。
【问题讨论】:
标签: c# asp.net asp.net-mvc ado.net entity-framework-4.1