【发布时间】:2011-03-15 13:41:49
【问题描述】:
我的 JOIN 遇到了很多麻烦,我不知道它是依赖于 EDM 还是只是 LINQ 查询。
当我在 SSMS 中尝试这个 T-SQL 时,它就像一个魅力:
选择 g.Id、g.Title、p.Platform_short 从游戏作为g left outer join Platforms as p on g.PlatformId = p.Id
但是当我尝试将 T-SQL 转换为 LINQ 时,使用:
我得到的问题是 Platform == null
我尝试了不同的方法,但我得到了重复。
我已经被这个问题困扰了几天,而且我是 EF 的新手。
var games = (from g in ctx.Games
join p in ctx.Platforms
on g.Platform.Id equals p.Id
select new
{
Id = g.Id,
Title = g.Title,
Platform = g.Platform,
});
这是整个方法:
public ICollection<Game> GetGames()
{
using(xContext ctx = new xContext())
{
ICollection<Game> col = new Collection<Game>();
var games = (from g in ctx.Games
join p in ctx.Platforms
on g.Platform.Id equals p.Id
select new
{
Id = g.Id,
Title = g.Title,
Platform = g.Platform,
});
foreach (var g in games)
{
Game game = new Game();
game.Id = g.Id;
game.Title = g.Title;
game.Platform = g.Platform;
col.Add(game);
}
return col;
}
}
我的 GamePoco 具有平台属性,并且在 EDM 中是一对一的关系。
希望任何人都可以提供帮助!
【问题讨论】:
标签: .net linq entity-framework-4 linq-to-entities poco