Linq查询返回相同的名称,即使它们应该不同

时间:2016-01-30 10:09:18

标签: c# sqlite linq-to-entities entity-framework-6

我是EF6的新手,我已经设置了Chinook数据库,并在.NET Framework 4.0上使用SqlLite .NET提供程序。

当我执行以下查询时,它会毫无问题地执行,但轨道名称都是相同的。它们应该是不同的,因为它们有不同的轨道ID,我查找了这些轨道ID,它们有不同的名称。

{{1}}

感谢任何帮助。

以下是我的结果的输出:

控制台输出:

2 个答案:

答案 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,我没有看到任何问题。

我仍然不明白为什么第一种方法不起作用。