4

我正在向表中插入值QueryList

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

哪里QueryID是一Identity列。

我正在使用foreach循环并一次插入多个值。我的问题是如何Identity在 Entity Framework 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
4

1 回答 1

3

您必须分别跟踪每个新创建的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);

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

于 2013-04-08T06:19:43.210 回答