【问题标题】:C# Get a List or array of id's after saving multiple objects to the databaseC#在将多个对象保存到数据库后获取一个列表或id数组
【发布时间】:2015-12-02 18:36:51
【问题描述】:

我正在使用 foreach 循环将多个对象保存到数据库中。 保存这些后,我想对已保存对象的 ID 做一些事情。
这是我的插入循环:

foreach (var Object in ListOfObjects)
{
    Object obj = new Object();
    obj.Objectvalue1 = Object.Value1;
    obj.Objectvalue2 = Object.Value2
    db.Objects.Add(obj);    
}
db.SaveChanges();

我想做的是:

List<int> IDs = new List<int>();
foreach (var Object in ListOfObjects)
{
    Object obj = new Object();
    obj.Objectvalue1 = Object.Value1;
    obj.Objectvalue2 = Object.Value2
    db.Objects.Add(obj); 
    IDs.Add(obj.ID) //this should be the Primary key
}
db.SaveChanges();

最后一个示例不起作用,因为 ID 将为空,您首先要将数据保存到数据库中以填充 Id,但我不想为我插入的每个对象保存。

我看到一些Questions 获取 ID,但这些都是用于插入单个对象,而不是多个。

总结:有没有办法获取插入记录的 id 的列表或数组。

【问题讨论】:

  • 在保存对象后枚举对象以获取其 ID
  • @KiwiPiet 这不会给我该表中的所有对象 ID,而不仅仅是插入的对象吗?
  • 很确定您可以在填充对象列表之后执行 AddRange,然后在 SaveChanges 之后您将获得 ID 列表。而不是在 foreach 中使用 Add 进行迭代。

标签: c# mysql arrays entity-framework list


【解决方案1】:

您只需保存添加到数据库中的已创建对象。因此,当您创建数据对象时,将其添加到列表中,然后在执行 SaveChanges 后,每个对象都将具有其 id,并且可以轻松地检索

dataObjectList.Select((o) => o.ID).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多