2013-04-08 4 views
4

Я вставив значения в таблице QueryListКак получить несколько вставленных значения идентификаторов в Entity Framework

[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 

ответ

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

примечания стороны: В вашем примере коды вы создали Query объект вне из-за петлю, но не использовать его вообще. Это может быть просто потому, что это всего лишь образец, но если вы его используете или вставляете в свой контекст данных, не создавайте его.

+0

Конечно, вы правы - слишком рано утром здесь :-) Мозг еще не до скорости. ....: _) –

+0

Спасибо большое .. его работая отлично. curentScope.Complete(); должен выходить за пределы петли foreach – Somashekhar

Смежные вопросы