0

既存のデータベースを使用して 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;

なぜこれが起こるのか知っているかもしれません。

私のスクリーンショットをご覧ください。

マッピングの詳細 ありがとう

4

0 に答える 0