0

リンク エンティティを使用して 2 つのエンティティを結合しています。

LinkEntity pricelevelentity = new LinkEntity();
pricelevelentity.JoinOperator = JoinOperator.Inner;
pricelevelentity.LinkFromEntityName = "product";
pricelevelentity.LinkFromAttributeName = "productid";

pricelevelentity.LinkToEntityName = "productpricelevel";
pricelevelentity.LinkToAttributeName = "productid";
query.LinkEntities.Add(pricelevelentity);

上記は、ProductId 属性で Product と ProductPriceLevel を結合しています。また、ProductPriceLevel.DefaultUomId の結合 Product.uomid に追加したい

これどうやってするの?

4

2 に答える 2

2

クライアント側で追加のフィルタリングを実行できるように、リンクされた/結合されたエンティティの列を返そうとする場合は、次のようLinkEntityColumnプロパティを使用する必要があります。

new QueryExpression("product")
{
    ColumnSet = new ColumnSet("oumid"),
    LinkEntities =
    {
        new LinkEntity("product", "productpricelevel", "productid", "productid", JoinOperator.Inner)
        {
            Columns = new ColumnSet("defaultuomid")
        }
    }
};
于 2013-04-19T11:13:32.607 に答える
1

James の回答がどのように回答としてマークされたかはわかりませんが、リンクされたエンティティを使用して複数の列に参加することはできません。James の回答を使用して両方の値を返し、クライアント側で結合を実行できますが、CRM はこのタイプの結合をサポートしていません。

Select * FROM A INNER JOIN B ON A.OneId = B.OneId AND A.TwoId = B.TwoId

Product の UomId の値がわかっている場合は、それを where 句に追加できます。

var qe = new QueryExpression("product");
var productPriceLevel = new LinkEntity("product", "productpricelevel", "productid", "productid", JoinOperator.Inner);
qe.LinkEntities = productPriceLevel;
productPriceLevel.LinkCriteria.AddCondition("defaultuomid", ConditionOperator.Equal, product.UomId);

効果的には次のようになります。

Select * FROM A INNER JOIN B ON A.OneId = B.OneId AND B.TwoId = 10 -- the Value of whatever the single A.TwoId value is you're looking for.
于 2013-04-19T13:07:20.103 に答える