既存のデータベースを使用して edmx ファイルを作成しました。JOINを実装しようとしています。しかし、それに似たクエリを作成しようとしたときにいくつかあります。コンパイル時間の問題があります。
CodeBox.FB.DataAccess.PlayerTeamSeason には 'PlayerID' の定義が含まれておらず、タイプ 'CodeBox.FB.DataAccess.PlayerTeamSeason' の最初の引数を受け入れる拡張メソッド 'PlayerID' が見つかりませんでした (using ディレクティブがないか、またはアセンブリリファレンス?!
そして、テーブルに基づく対応するクラスを確認できます。しかし、[マッピングの詳細] ウィンドウで、同等のフィールド/プロパティを持たない列がいくつかあることがわかりました。これらは forgein key フィールドであることがわかりました。SO で非常に多くの質問を見つけましたが、問題の解決策が見つかりませんでした。このリンクを見つけまし た 2 つのテーブルで結合しようとすると、外部キーで結合できません。
しかし、私はこのようなものに参加することができます
var query =
from contact in contacts
join order in orders
on contact.ContactID
equals order.Contact.ContactID into contactGroup
select new
{
ContactID = contact.ContactID,
OrderCount = contactGroup.Count(),
Orders = contactGroup
};
order.Contact.ContactID
このように私は参加させることができます。
しかし、次のクエリのようなものが期待されます。
var query =
from order in orders
join detail in details
on order.SalesOrderID equals detail.SalesOrderID
where order.OnlineOrderFlag == true
&& order.OrderDate.Month == 8
select new
{
SalesOrderID = order.SalesOrderID,
SalesOrderDetailID = detail.SalesOrderDetailID,
OrderDate = order.OrderDate,
ProductID = detail.ProductID
};
order.SalesOrderID equals detail.SalesOrderID
. 生成した edmx を使用しようとしたときに、エンティティに対応する外部キーが見つかりません。
これは、私が書こうと思っていたクエリです。しかし、エラーが発生していPTS.PlayerID
ますPTS.TeamID
var pl2 = from PTS in dataContext.PlayerTeamSeasons
join P in dataContext.Players on PTS.PlayerID equals P.ID
where PTS.TeamID == 3
select P.ID;
クエリをこれに変更すると、正常に動作します。
var pl3 = from Pts in dataContext.PlayerTeamSeasons
join P in dataContext.Players on Pts.Player.ID equals P.ID
where Pts.Team.ID == 3
select P.ID;
なぜこれが起こるのか知っているかもしれません。
私のスクリーンショットをご覧ください。
ありがとう