0

我有一个问题:创建新记录时出现错误...`

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Expected non-empty Guid.Detail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220989</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
  <Message>Expected non-empty Guid.</Message>
  <Timestamp>2013-01-31T09:23:30.4406111Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

代码...` 将字段设置为值。我也试过

Pline.Id = new Guid();

Pline.Id = a; //(a is a guid ref to parent record)


Entity Pline = new Entity("bc_packlines");
if (b.Attributes.ContainsKey("mins_sum"))
{
    BlockMins = ((Decimal)((AliasedValue)b["mins_sum"]).Value);
}

Pline.Attributes["bc_packlinesid"] = Pline.Id;
Pline.Attributes["bc_pack"] = a;
Pline.Attributes["bc_type"] = "948110004";
Pline.Attributes["bc_minutespurchased"] = BlockMins;
Pline.Id = a;
service.Create(Pline);

请问有什么想法吗?谢谢

4

3 回答 3

1

其中一些有点令人困惑,尤其是

Pline.Attributes["bc_packlinesid"] = Pline.Id;
// ...
Pline.Id = a;

您不需要明确设置新实体的 ID,因此请删除:

Pline.Id = a;

编辑:您还说这a是父记录的 Guid - 那么您如何/为什么将其设置为另一条记录的 PK?那不会完全停止。

其次,在这一行

Pline.Attributes["bc_packlinesid"] = Pline.Id;

您正在将该字段的值设置为bc_packlinesid空 guid,因为您正在创建的记录的 Id 尚未设置。这意味着您正试图让实体引用自己?对我来说这听起来不对,但如果是,您将需要在第二步之后执行此操作

var newId = service.Create(PLine)

就像是

Pline.Attributes["bc_packlinesid"] = newId;
service.Update(PLine);

也就是说,如果这是可能的,我不确定 CRM 是否会允许实体自己进行父子关系。

于 2013-01-31T11:17:53.373 回答
0

修复了这个,第一次编辑 fetch 语句

<attribute name='productid' groupby='true' alias='productid' />

无论如何,这是每个新的 bc_packlines 所基于的:然后...

productid = ((Guid)((AliasedValue)b["productid"]).Value);

                        BlockMins = ((Decimal)((AliasedValue)b["mins_sum"]).Value);

                        Entity Pline = new Entity("bc_packlines");
                        Pline.Id = productid;

谢谢:)希望这可以帮助某人

于 2013-01-31T11:19:44.583 回答
0

你不应该设置你的记录的PK,CRM会创建它,所以你需要删除它

线

 Pline.Id = a;

并创建与父实体的关系,您拥有其 id 并编写以下内容

代码

Pline.Attributes["bc_packlinesid"]=new CrmEntityRefrence(Pline.EntityLogicalName,parentEntityID);
于 2013-02-01T01:02:31.400 回答