Dis*_*ile 8 c# transactions entity-framework-4
当您在上下文中调用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();
Run Code Online (Sandbox Code Playgroud)
是的,EF4将创建一个新的交易,如果还没有.看到
http://msdn.microsoft.com/en-us/library/bb896325.aspx
当您调用SaveChanges时,如果存在当前事务,则实体框架将此事务用于针对数据源的操作.否则,它会为操作创建一个新事务.您可以使用EntityTransaction,Transaction或TransactionScope定义事务.
不,没有办法从交易中豁免单个实体.
不确定你的第三个问题 - 关于你是否可以完全关闭交易,但我猜不是基于上面的摘录.
我知道这不是你想听到的答案,但是如果你想要P2保存而不管P1是否成功,你需要将P2保存到不同的对象上下文中.
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |