一次事务创建父子实体,AddRelatedObject抛出异常
Creating a parent and child entity in one transaction, AddRelatedObject throws an exception
我创建了一个程序集以在 Dynamics 365 v9 的工作流中使用。
我有一个父实体与我的子实体有 1:N 亲子关系。
我想在同一个事务中创建 Parent 和 Child,这样如果任何事情失败,整个事情都会回滚。
文档说这是用 AddRelatedObject 方法完成的。
var parent = new Parent()
{
Name = "PARENT"
};
var child = new Child()
{
Name = "CHILD"
};
crmContext.AddObject(parent);
crmContext.AddRelatedObject(parent, new Relationship("my_relationship"), child);
crmContext.SaveChanges();
Parent 和 Child 的 类 是使用 XrmToolbox 的 Early Bound Generator 插件创建的,尚未更改。
当我调用 SaveChanges
时出现异常:
Message: An error occured while processing this request.
Inner Message: Cannot find record to be updated
我不知道为什么会这样。相同的代码适用于 CRM 2011。
如果我删除 AddRelatedObject
行,则父级创建得很好。
知道我做错了什么吗?
引用 this question 上的一个答案,您可能想试一试:
EntityA primaryEntity = new EntityA() { //initialise me... };
EntityB secondaryEntity = new EntityB() { //initialise me... };
context.AddObject(primaryEntity);
context.AddObject(secondaryEntity);
// This is the key part: explicitly link the two entities
context.AddLink(primaryEntity,
new Relationship("relationship_name_here"), secondaryEntity);
// commit changes to CRM
context.SaveChanges();
我的问题原来是连接到 child 实体的单独工作流试图更新 parent 实体。它很沮丧,因为它假设有 parent 而实际上没有。
如果没有 parent 记录现在已经解决了错误,我会在工作流程的开头放置一个 Check Condition
来终止它。
我没有意识到其他 plugins/workflows 引起的错误会冒泡到我的身上。
对于任何其他遇到此错误的人,我会检查两件事:
- 针对 parent 或 child 实体注册的插件
- 与 parent 或 child 个实体关联的工作流程
我创建了一个程序集以在 Dynamics 365 v9 的工作流中使用。
我有一个父实体与我的子实体有 1:N 亲子关系。 我想在同一个事务中创建 Parent 和 Child,这样如果任何事情失败,整个事情都会回滚。
文档说这是用 AddRelatedObject 方法完成的。
var parent = new Parent()
{
Name = "PARENT"
};
var child = new Child()
{
Name = "CHILD"
};
crmContext.AddObject(parent);
crmContext.AddRelatedObject(parent, new Relationship("my_relationship"), child);
crmContext.SaveChanges();
Parent 和 Child 的 类 是使用 XrmToolbox 的 Early Bound Generator 插件创建的,尚未更改。
当我调用 SaveChanges
时出现异常:
Message: An error occured while processing this request.
Inner Message: Cannot find record to be updated
我不知道为什么会这样。相同的代码适用于 CRM 2011。
如果我删除 AddRelatedObject
行,则父级创建得很好。
知道我做错了什么吗?
引用 this question 上的一个答案,您可能想试一试:
EntityA primaryEntity = new EntityA() { //initialise me... };
EntityB secondaryEntity = new EntityB() { //initialise me... };
context.AddObject(primaryEntity);
context.AddObject(secondaryEntity);
// This is the key part: explicitly link the two entities
context.AddLink(primaryEntity,
new Relationship("relationship_name_here"), secondaryEntity);
// commit changes to CRM
context.SaveChanges();
我的问题原来是连接到 child 实体的单独工作流试图更新 parent 实体。它很沮丧,因为它假设有 parent 而实际上没有。
如果没有 parent 记录现在已经解决了错误,我会在工作流程的开头放置一个 Check Condition
来终止它。
我没有意识到其他 plugins/workflows 引起的错误会冒泡到我的身上。
对于任何其他遇到此错误的人,我会检查两件事:
- 针对 parent 或 child 实体注册的插件
- 与 parent 或 child 个实体关联的工作流程