2012-01-13 3 views
2

мне интересно, если мне нужно постоянно называть SubmitChanges(), когда я запускаю последовательные операторы удаления/вставки в одном хранилище данных:LINQ удалить, вставить, отправить

db.SomeTable.DeleteAllOnSubmit(db.SomeTable.Where(p => p.PartID == part.PartID)); 
db.SubmitChanges(); 

List<SomeTable>  alist = new List<SomeTable>(); 

foreach (GenericLookupE item in part.PublicAssistance) 
{ 
    alist.Add(new SomeTableEntity() { . . . }); 
} 

db.SomeTable.InsertAllOnSubmit(alist); 
db.SubmitChanges(); 

в основном, все значения я храню в этой таблице отображаются флажки (один участник для многих флажков). поэтому я удаляю все в таблице для этого участника и создаю список для вставки 'en-masse'.

не уверен, если я заявляю это четко или нет.

введите другой способ, если я сделаю DeleteAllOnSubmit без вызова SubmitChanges, а затем вызовет InsertAllOnSubmit и, наконец, вызовет SubmitChanges, будет ли он работать как ожидалось?

спасибо.

+0

Вы используете Linq-to-Sql? –

+0

yes ------------ – horace

+0

Если вы пытаетесь сделать транзакцию, используйте «TransactionScope». –

ответ

4

Да, это будет работать правильно, и выполнение всех изменений и SubmitChanges только один раз обычно считается лучше, чем альтернатива их отправки отдельно.