我有以下数据库:
艺术家可以有很多头衔。标题可以是歌曲或专辑。 在我的代码中,我有以下配置:
public class AlbumConfiguration : EntityTypeConfiguration<AlbumDetail>
{
public AlbumConfiguration()
{
this.HasKey(a => a.Id);
this.Property(a => a.Title);
this.HasRequired(a => a.TitleDetail).WithOptional(t => t.Album);
this.ToTable("Albums");
}
}
public class ArtistConfiguration : EntityTypeConfiguration<ArtistDetail>
{
public ArtistConfiguration()
{
this.HasKey(a => a.Id);
this.Property(a => a.Name);
this.ToTable("Artists");
}
public class TitleConfiguration : EntityTypeConfiguration<TitleDetail>
{
public TitleConfiguration()
{
this.HasKey(a => a.Id);
this.Property(a => a.Title);
this.HasRequired(a => a.Artist).WithMany(j => j.Titles).HasForeignKey(a => a.ArtistId);
this.ToTable("Titles");
}
}
当我想要查询显示一位艺术家的专辑时,我就这样做了:
IQueryable<AlbumDetail> artistDetail =
base.Query.Where(x => x.Id == artistId).Include("Titles").OfType<AlbumDetail>();
return artistDetail.ToList();
这是生成的查询:
SELECT
[Extent1].[Id] AS [Id],
'0X0X' AS [C1],
[Extent2].[Title] AS [Title],
[Extent2].[ArtistId] AS [ArtistId],
[Extent3].[Id] AS [Id1],
[Extent1].[TitleDetail_Id] AS [TitleDetail_Id],
[Extent4].[Id] AS [Id2]
FROM [dbo].[Albums] AS [Extent1]
INNER JOIN [dbo].[Titles] AS [Extent2] ON [Extent1].[Id] = [Extent2].[Id]
LEFT OUTER JOIN [dbo].[Songs] AS [Extent3] ON [Extent1].[Id] = [Extent3].[TitleDetail_Id]
LEFT OUTER JOIN [dbo].[Albums] AS [Extent4] ON [Extent1].[Id] = [Extent4].[TitleDetail_Id]
当我现在想要查询显示艺术家拥有的专辑时,我收到以下错误:
列名'TitleDetail_Id'无效。 列名称“AlbumDetail_Id”无效。 列名称'TitleDetail_Id'无效。 列名称'TitleDetail_Id'无效。 列名称'TitleDetail_Id'无效。 列名称'TitleDetail_Id'无效。 列名称“Song_Id”无效。 列名称“AlbumDetail_Id1”无效。 列名称'TitleDetail_Id'无效。 列名称“Song_Id”无效。 列名称“AlbumDetail_Id1”无效。
任何人都可以帮助我吗?