我使用现有数据库创建了一个 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;
我可以知道为什么会这样。
请看我的截图。
谢谢