0

我使用现有数据库创建了一个 edmx 文件。我正在尝试实现JOIN。但是有一段时间我试图创建一个类似的查询。存在编译时问题。

CodeBox.FB.DataAccess.PlayerTeamSeason' 不包含“PlayerID”的定义,并且找不到接受“CodeBox.FB.DataAccess.PlayerTeamSeason”类型的第一个参数的扩展方法“PlayerID”(您是否缺少 using 指令或装配参考?!

而且我可以看到基于表格的相应类。但是我发现在 Mapping Details 窗口中,有些列没有等效的字段/属性,我发现这些是 forgein key feilds 。我在 SO 中发现了很多问题,但我没有找到解决问题的方法。我找到了这个链接 当我尝试加入两个表时,我无法使用外键加入。

但我可以加入这样的事情

 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