CRM 2011 SDK交易 [英] CRM 2011 SDK transaction

查看:69
本文介绍了CRM 2011 SDK交易的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用crm 2011 sdk和XrmServiceContext创建交易?

How to create transaction using crm 2011 sdk and XrmServiceContext?

在下一个示例中, new_brand是一些自定义实体。我想创建三个品牌。第三有错误的OwnerID引导。当我调用SaveChanges()方法时,创建了两个品牌,但我遇到了例外。如何回滚创建前两个品牌?

In next example 'new_brand' is some custom entity. I want to create three brands. Third has wrong OwnerID guid. When I call SaveChanges() method, two brands are created and I've got exception. How to rollback creating of first two brands?

是否可以不使用插件和工作流?

Is it possible without using pluggins and workflows?

using (var context = new XrmServiceContext(connection))
{
    SystemUser owner = context.SystemUserSet.FirstOrDefault(s => s.Id == new Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"));

    // create 3 brands
    new_brand b1 = new new_brand();
    b1.new_brandidentification = 200;
    b1.new_name = "BRAND 200";
    b1.OwnerId = owner.ToEntityReference();
    context.AddObject(b1);

    new_brand b2 = new new_brand();
    b2.new_brandidentification = 300;
    b2.new_name = "BRAND 300";
    b2.OwnerId = owner.ToEntityReference();
    context.AddObject(b2);

    new_brand b3 = new new_brand();
    b3.new_brandidentification = 400;
    b3.new_name = "BRAND 400";
    b3.OwnerId = new EntityReference(SystemUser.EntityLogicalName, new Guid("00000000-0000-0000-0000-000000000000"));
    context.AddObject(b3);

    context.SaveChanges();
}


推荐答案


是否可以不使用插件和工作流程?

Is it possible without using plugins and workflows?

不,我不相信这是事实。每个 context.AddObject()是原子的。如果您不想使用插件,那么我想您所能做的就是拥有某种清理逻辑,如果您的条件不满足,该逻辑将删除创建的记录。

No I don't believe that it is. Each context.AddObject() is atomic. If you don't want to use plug-ins then all I think you can do is have some sort of clean-up logic that deletes the created records if your conditions are not met.

这篇关于CRM 2011 SDK交易的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆