ObjectContext.AcceptAllChanges!谁正在接受并由谁进行更改?

| 我对实体框架ObjectContext.AcceptAllChanges感到困惑。问题是,谁在接受且谁在进行更改? 通常,如何在Entity Framework中控制事务和事务隔离? 我是新用户,所以我只能编辑自己的问题....... 谢谢你们……Akram Shahda和Ladislav Mrnka 现在,我对EF的印象不再是那么糟糕,尽管与过去的“连接,事务,ADO.Net,存储过程”式的数据库访问相比,它并没有增加任何有价值的功能,但可能会增加一些潜力。安全性问题,并向DBA添加一些管理工作(因为连接字符串需要对所有表具有权限),并限制了某些性能改进技术的使用,尤其是在某些批处理数据库操作期间。 我很高兴我仍然可以通过\“ Enlist \”(另一个Microsoft新词,为什么他们不只是使用\“ use \”)在事务管理和事务隔离级别上保持相同的控制级别,因此我可以管理自己的连接和\在“ TransactionScope \”中,可以选择所需的隔离级别。 现在,我对\“ ObjectContext.AcceptAllChanges \”的问题是: 谁在进行更改? 谁接受更改? 谢谢 ......     
已邀请:
默认情况下,在“ 1”期间调用“ 0”。如果保存成功,则接受更改。您可以关闭此功能并通过调用
AcceptAllChanges
手动接受更改。这在某些更高级的方案中可能很有用。这样的场景之一可以是复杂的事务,其中处理多个事务资源。 例如,假设我要在同一分布式事务中将数据保存到数据库并向MSMQ发送消息:
using (var scope = new TransactionScope())
{
    // This version will not accept changes automatically
    context.SaveChanges(SaveOptions.DetectChangesBeforeSave);

    // Let\'s assume this sends message to the message queue
    myMessageSender.SendSomeMessage(...);

    scope.Complete();

    // Now I know that transaction is completed and I can accept
    // changes in the context
    context.AcceptAllChanges();
}
如果在示例中我不使用手动接受,则发送消息时的错误将回滚事务(因此数据将不会持久化到数据库中),但是我的上下文将处于接受所有更改的状态,而我不会能够再次处理它们。     
对于实体框架中的事务管理,您可以参考以下链接: http://msdn.microsoft.com/en-us/library/bb896325.aspx     

要回复问题请先登录注册