我是EF6的新手,我已经设置了Chinook数据库,并在.NET Framework 4.0上使用SqlLite .NET提供程序。
当我执行以下查询时,它会毫无问题地执行,但轨道名称都是相同的。它们应该是不同的,因为它们有不同的轨道ID,我查找了这些轨道ID,它们有不同的名称。
{{1}}
感谢任何帮助。
以下是我的结果的输出:
答案 0 :(得分:0)
您的实体不正确。 如果播放列表具有TrackId,则表示播放列表只能有一个音轨。 您的输出显示您有许多具有相同名称的播放列表。 Track应该有PlaylistId,但很难给出一个确切的答案,而不会看到实体。
答案 1 :(得分:0)
好的,我尝试了另一种方法,使用连接到联结表,现在它提供了正确的结果
var result = from p in context.Playlists
join pt in context.PlaylistTracks on p.PlaylistId equals pt.PlaylistId
join t in context.Tracks on pt.TrackId equals t.TrackId
where p.Name == "Brazilian Music"
select new { PlaylistName = p.Name, TrackId = t.TrackId, TrackName = t.Name };
foreach (var p in result)
{
Console.WriteLine(p.PlaylistName + ", " + p.TrackId + ", " + p.TrackName);
}
我检查了联结表POCO,我没有看到任何问题。
我仍然不明白为什么第一种方法不起作用。