私は ASP.NET と LINQ に比較的慣れていませんが、非常に奇妙な動作に遭遇し、ほとんど気が狂いそうになりました。タイトルに記載されているエラーに関する議論をいくつか見つけましたが、私の問題に当てはまるものはありませんでした。オブジェクト リレーショナル デザイナーからの次のスナップショットを見てください。
ご覧のとおり、aRelation
は 2 つの の接続を表しAnchor
ます。このため、 table に対して定義された 2 つの外部キーがありますRelation
:Relation.AnchorIDFrom => Anchor.AnchorID
とRelation.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.Relations
from relation in anchor.Relations1
ToList()
私は何が欠けていますか?