Entity framework 实体框架-检索由savechanges创建的ID

Entity framework 实体框架-检索由savechanges创建的ID,entity-framework,Entity Framework,很抱歉昨天问了一个相关的问题,但经过一些睡眠后,我简化了我的问题 在下面的示例中,我循环遍历ObjectQuerySourceTable并向Positions表添加行。添加所有新行并保存更改后,将创建主键(整数标识列) foreach (var row in sourcetable) { var newpos = new Positions() { Field1 = row.field

很抱歉昨天问了一个相关的问题,但经过一些睡眠后,我简化了我的问题

在下面的示例中,我循环遍历ObjectQuerySourceTable并向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中的output语句所能做的事情。

当然-您需要做的是保留要保存的实体列表,然后在保存后检查它们:

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);
}
List_newItems=newlist();
foreach(sourcetable中的var行)
{
var newpos=新职位()
{
Field1=行。字段,
Field2=第2行。Field2,
Field3=行。Field3
};
_newItems.Add(newpos);
}
Entities.SaveChanges();
foreach(新项目中的位置p)
{
WriteLine(“新项的ID为:{0}”,p.ID);
}

保存项目后,它们代表INT-IDENTITY字段的字段应该由EF自动更新,而无需执行任何操作。检查一下场地

啊,我明白了。谢谢你,这是非常有用的技术。