【发布时间】:2016-01-30 10:09:18
【问题描述】:
我是 EF6 的新手,我已经设置了 Chinook 数据库并让它与 .NET Framework 4.0 上的 SqlLite .NET 提供程序一起工作。
当我执行以下查询时,它执行没有问题,但轨道名称都是一样的。它们应该是不同的,因为它们具有不同的轨道 ID,并且我查找了这些轨道 ID,它们具有不同的名称。
var result = context.Playlists.Include(p => p.Tracks)
.Where(p => p.Name == "Brazilian Music")
.SelectMany(p => p.Tracks);
foreach(var p in result)
{
Console.WriteLine(p.Playlist.Name + ", " + p.TrackId + ", " + p.Track.Name);
}
感谢任何帮助。
这是我的结果的输出:
控制台输出:
【问题讨论】:
-
你为什么用
Console.WriteLine(p.Playlist.Name + ", " + p.TrackId + ", " + p.Track.Name);而不是Console.WriteLine(p.Playlist.Name + ", " + p.TrackId + ", " + p.Name);?有专栏Track.Track吗? -
看起来正确。 ef中的关系是否设置正确?
-
我想查看从播放列表到曲目的映射。 p.Playlist.Name 和 p.TrackId 没有问题。是 p.Track.name 返回相同的值,即使它们应该不同。
-
我相信连接表上的关系设置正确。这是一个多对多的关系。但是,如果我使用 join 执行此操作,则效果很好(请参阅下面的答案)
标签: c# sqlite linq-to-entities entity-framework-6