4

テーブルに値を挿入していますQueryList

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

は列ですQueryIDIdentity

ループを使用して、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>簡単にするためにa を使用することをお勧めします。

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);

補足: コード サンプルQueryでは、​​for ループの外側でオブジェクトを作成しましたが、まったく使用しませんでした。これは単なるサンプルだからかもしれませんが、データ コンテキストで使用または挿入する場合は、作成しないでください。

于 2013-04-08T06:19:43.210 に答える