我有一个必须这样做的.net程序:
我试过了:
Account acc = new Account();
acc.Name = "test on " + DateTime.Now.ToString();
Context.AddObject(acc);
CreateJournal jEntry = new CreateJournal();
jEntry.targetid = acc.Id.ToString();
Context.AddObject(jEntry);
Context.SaveChanges();
但它不起作用,targetId是Guid.Empty。
上下文的类型为 OrganizationServiceContext 。
答案 0 :(得分:1)
在您感兴趣的每个实体上使用插件有一个日志,例如创建事件的post stage插件,它将创建您的Journal实体。它将在“事务”模式下工作。
答案 1 :(得分:1)
CRM支持在创建记录之前为其ID分配新对象。记住Guids与整数ID不同,它是全局唯一的,因此基于guid的系统通常支持这种“set id first”行为。
特定于您的代码...尝试按如下方式分配acc.Id:
Account acc = new Account();
acc.Name = "test on " + DateTime.Now.ToString();
acc.Id = Guid.NewGuid();
Context.AddObject(acc);
编辑:(抱歉,我没有意识到)这段代码没有在插件代码中运行,所以你运气不好。请参阅http://social.microsoft.com/Forums/en/crmdevelopment/thread/229dec17-6c49-43ad-9751-6ea61e4ecd36。
您可能已经听说过的交易行为在此部分记录,并解释了CRM中交易支持的背景: http://msdn.microsoft.com/en-us/library/gg327941.aspx#bkmk_DatabaseTransactions