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>

Code...` は、フィールドを値に設定します。私も試してみました

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;

編集:また、それが親レコードへのGUIDであると言いますa-では、別のレコードのPKとしてどのように/なぜ設定しますか?それはフルストップでは機能しません。

第二に、この行で

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

bc_packlinesid作成しているレコードのIDがまだ設定されていないため、フィールドの値を空のGUIDに設定しています。これは、エンティティがそれ自体を参照できるようにしようとしていることを意味しますか?私には正しく聞こえませんが、そうである場合は、次の2番目のステップとしてこれを行う必要があります。

var newId = service.Create(PLine)

何かのようなもの

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

つまり、それが可能であるとしても、CRMがエンティティ自体の親子化を許可するかどうかはわかりません。

于 2013-01-31T11:17:53.373 に答える
0

レコードのPKを設定しないでください。CRMがレコードを作成するため、これを削除する必要があります

ライン

 Pline.Id = a;

親エンティティとの関係を作成するには、そのIDがあり、次のように記述します。

コード

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

これを修正しました。最初の編集フェッチステートメント

<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 に答える