对于昨天提出相关问题表示歉意,但经过一段时间的睡眠我已经简化了我的问题。
在下面的示例中,我遍历objectquery sourcetable并将行添加到Positions表中。添加所有新行并保存更改后,将创建主键(整数标识列)。
foreach (var row in sourcetable)
{
var newpos = new Positions()
{
Field1 = row.field,
Field2 = row.field2,
Field3 = row.field3
};
}
Entities.savechanges
在EF 3.5中,是否可以访问上述过程添加的所有主键列表?说一些类似于使用T-sql中的输出语句所做的事情。
答案 0 :(得分:2)
当然 - 您需要做的是挂起您要保存的实体列表,然后在保存后检查它们:
List<Positions> _newItems = new List<Positions>();
foreach (var row in sourcetable)
{
var newpos = new Positions()
{
Field1 = row.field,
Field2 = row.field2,
Field3 = row.field3
};
_newItems.Add(newpos);
}
Entities.SaveChanges();
foreach(Positions p in _newItems)
{
Console.WriteLine("ID for new item is: {0}", p.ID);
}
保存项目后,表示INT IDENTITY字段的字段应由EF自动更新,而不再执行任何操作。只是检查现场!