2013-04-08 64 views
4

我在插入值表QueryList如何獲得多個插入的標識值在實體框架

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

其中QueryIDIdentity列。

我正在使用一個foreach循環並一次插入多個值。我的問題是如何讓實體框架3.5

所有新插入的Identity值。這是我的代碼

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 

回答

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

旁註:在您的代碼示例創建的for循環,但沒有使用它在所有外Query對象。這可能只是因爲它只是一個示例,但如果您使用它或將其插入到數據上下文中,請不要創建它。

+0

當然 - 你是對的 - 早上太早了:-)大腦還沒有加速。 ....:_) – 2013-04-08 06:39:53

+0

非常感謝..它的工作正常。 curentScope.Complete(); 應該出現在foreach循環之外 – Somashekhar 2013-04-08 07:08:17