2011-02-24 4 views
8

Использует ли Entity Framework транзакцию при вызове SaveChanges в вашем контексте? Есть ли способ полностью отключить транзакции или удалить определенную компанию из транзакции?Как Entity Framework обрабатывает транзакции?

AdventureWorksEntities db = new AdventureWorksEntities(); 

Product p1 = new Product(); 
// ... 

Product p2 = new Product(); 
// set invalid data 

db.Products.AddObject(p1); 
db.Products.AddObject(p2); 

// what happens when I call this - does it roll back everything? 
// can i tell p2 not to participate in the transaction? 
db.SaveChanges(); 

ответ

7

Да, EF4 создаст новую транзакцию, если один уже не существует. См

http://msdn.microsoft.com/en-us/library/bb896325.aspx

При вызове SaveChanges, если текущая транзакция существует, Entity Framework использует эту операцию для операций против источника данных. В противном случае он создает новую операцию для операции. Вы можете определить транзакции с помощью EntityTransaction, Transaction, или TransactionScope.

Нет, нет никакого способа, чтобы освободить одну сущность от сделки.

Не уверен относительно вашего третьего вопроса - о том, можете ли вы полностью отключить транзакции, но я предполагаю, что это не основано на вышеуказанной выдержке.

Я знаю, что это не тот ответ, который вы хотели услышать, но если вы хотите, чтобы P2 сохранялся независимо от того, успешно ли P1, вам нужно будет сохранить P2 в объектном контексте .

+0

Постарайтесь не добавлять ответ, удалите его и добавьте еще один. Вместо этого просто отредактируйте исходный ответ. – RPM1984

+0

Отмечено - спасибо :) –

+0

Этот оригинальный удаленный ответ все еще отображается, когда вы просматриваете этот вопрос? –

1

Относительно последнего вопроса об отключении сделок.
Попробуйте создать TransactionScope с подавлением TransactionScopeOption, чтобы полностью отключить транзакции для кодового блока. Посмотрите на this thread для получения дополнительной информации.

+0

Я посмотрю, спасибо. – Dismissile

+0

это не поможет. – AGuyCalledGerald

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