如何在实体框架中获得多个插入的身份值

本文关键字:插入 身份 实体 框架 | 更新日期: 2023-09-27 18:08:12

我正在向表QueryList插入值

    [QueryID] [WorkItemID] [RaisedBy]
       1        123           xyz
       2        234           abc

其中QueryIDIdentity列。

我使用foreach循环并一次插入多个值。我的问题是如何获得所有新插入的Identity值在实体框架3.5

这是我的代码

using (TransactionScope currentScope = new TransactionScope())
{
    Query newQuery = new Query(); 
    foreach (long workItemId in workItemID)
    {
        newQuery = new Query();
        ...
        currentScope.Complete();
        success = true;           
    }
 }
 entityCollection.SaveChanges(true);
 int  QueryID = newQuery.QueryID; //It gives me last 1 Identity value

如何在实体框架中获得多个插入的身份值

您必须分别跟踪每个新创建的Query对象。为了简单起见,我建议使用List<Query>:

using (TransactionScope curentScope = new TransactionScope())
{
    List<Query> newQueries = new List<Query>(); 
    Query newQuery = new Query();
    newQueries.Add(newQuery);
    foreach (long workItemId in workItemID)
    {
        newQuery = new Query();
        newQueries.Add(newQuery);
        ...
        curentScope.Complete();
        success = true;           
    }
}
entityCollection.SaveChanges(true);
var queryIDs = newQueries.Select(q => q.QueryID);

边注:在您的代码示例中,您在for循环之外创建了一个Query对象,但根本没有使用它。这可能只是因为它只是一个示例,但是如果您在数据上下文中使用它或插入它,就不要创建它。