2

私は ASP.NET と LINQ に比較的慣れていませんが、非常に奇妙な動作に遭遇し、ほとんど気が狂いそうになりました。タイトルに記載されているエラーに関する議論をいくつか見つけましたが、私の問題に当てはまるものはありませんでした。オブジェクト リレーショナル デザイナーからの次のスナップショットを見てください。

データモデルを示す ORD のスクリーンショット

ご覧のとおり、aRelationは 2 つの の接続を表しAnchorます。このため、 table に対して定義された 2 つの外部キーがありますRelation:Relation.AnchorIDFrom => Anchor.AnchorIDRelation.AnchorIDTo => Anchor.AnchorID. これらの列はいずれもヌル可能ではありません。私の目標は、アンカーの ID のリストを指定してRelation、これらのアンカーのいずれかが参加しているすべての s を取得することです。この方法は次のとおりです。

[WebMethod]
public string GetRelations(String token, List<Guid> anchorIDs)
{
    JavaScriptSerializer js = new JavaScriptSerializer();
    LinkItCoreDataContext dc = new LinkItCoreDataContext();

    IQueryable relationQry =
        from anchor in dc.Anchors
        where anchorIDs.Contains(anchor.AnchorID)
        //stupid names because object relational designer
        //does not seem to support custom names:
        from relation in anchor.Relations.Union(anchor.Relations1)
        select new
        {
            relationID = relation.RelationID,
            anchorIDFrom = relation.AnchorIDFrom,
            anchorIDTo = relation.AnchorIDTo,
            relationTypes = from type in relation.RelationTypes
                            //stupid names again:
                            select type.RelationType1
        };
    return js.Serialize(relationQry);//Here's where the error occurs
}

実行時に、これにより、Types in Union or Concat are built into incompatically というメッセージが表示されNotSupportedExceptionます。式は構文的に完全に等しい 2 つのものをマージする必要があるため、これは非常に奇妙だと思います。重要な行を変更すると、またはすべてが正常に機能します。また、(解決策として言及されることもあります)追加しても何も変わりません。anchor.Relations.Union(anchor.Relations1)from relation in anchor.Relationsfrom relation in anchor.Relations1ToList()

私は何が欠けていますか?

4

3 に答える 3

0

これを試しましたか:

from relation in anchor.Relations.Concat(anchor.Relations1)

また

from relation in anchor.Relations.Concat(anchor.Relations1).Distinct()

この 2 番目は、機能的に Union と同じはずですが、それがあなたが望むものであるとは確信していません。

于 2013-06-23T05:04:15.650 に答える