CRM 2011 SDK交易

laz*_*rus 5 sdk transactions transactionscope early-binding dynamics-crm-2011

如何使用crm 2011 sdk和XrmServiceContext创建事务?

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

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

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();
}
Run Code Online (Sandbox Code Playgroud)

Gre*_*ens 1

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

不,我不相信是这样。每个context.AddObject()都是原子的。如果您不想使用插件,那么我认为您所能做的就是使用某种清理逻辑,在不满足您的条件时删除创建的记录。