检索整个对象的加入而不仅仅是性能
问题描述:
反正是有,我可以在此查询得到整个对象平台而不只是性质的,我使用波科与EF4:检索整个对象的加入而不仅仅是性能
var games = (from g in ctx.Games
join p in ctx.Platforms on g.Platform.Id equals p.Id into joinTable
from j in joinTable.DefaultIfEmpty()
select new
{
GameId = g.Id,
Title = g.Title,
PlatformId = j.Id,
PlatformShort = j.Platform_short
});
而不是使用PlatformId的和PlatformShort我只想检索整个Platform对象(j)。像“平台= j”
有没有更好的方式来返回类型集合与迭代通过游戏第一?
foreach (var g in games)
{
Game game = new Game();
game.Platform = new Platform();
game.Id = g.GameId;
game.Title = g.Title;
game.Platform.Id = g.PlatformId;
game.Platform.Platform_short = g.PlatformShort;
col.Add(game);
}
我尝试这样做,而不是:
return ctx.Games.Include("Platform").Take(50).ToList();
,现在我得到了所有100次记录相同的值。
这里是SQL:
FROM [dbo].[Games] AS [Extent1]
LEFT OUTER JOIN (SELECT [Extent2].[Id] AS [Id1], [Extent2].[Platform_short] AS [Platform_short], [Extent2].[Platform_long] AS [Platform_long], [Extent2].[Description] AS [Description], [Extent2].[Image] AS [Image], [Extent2].[CreatedDate] AS [CreatedDate1], [Extent2].[ModifiedDate] AS [ModifiedDate1]
FROM [dbo].[Platforms] AS [Extent2]
LEFT OUTER JOIN [dbo].[Games] AS [Extent3] ON [Extent2].[Id] = [Extent3].[PlatformId]) AS [Join1] ON [Extent1].[PlatformId] = [Join1].[Id1] LEFT OUTER JOIN (SELECT [Extent4].[Id] AS [Id3], [Extent5].[Id] AS [Id2]
FROM [dbo].[Platforms] AS [Extent4]
LEFT OUTER JOIN [dbo].[Games] AS [Extent5] ON [Extent4].[Id] = [Extent5].[PlatformId]) AS [Join3] ON [Extent1].[PlatformId] = [Join3].[Id3]
答
是的,有一个更好的办法:
var collection = context.Games.Include("Platform").ToList();
某处有问题,你的应用程序,因为使用'平台= j'应该工作。 – 2011-03-15 21:12:18