アルバムに多くのトラックがあり、トラックが 1 つのアルバムにしか存在できない音楽トラックとアルバムをモデリングしています。結合テーブルを使用して、アルバム リスト内の位置を指定します。
ここに私のモデルがあります:
public class Track
{
public int Id { get; set; }
public string Name { get; set; }
public int AlbumTrackId { get; set; }
public virtual AlbumTrack AlbumTrack { get; set; }
}
public class Album
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<AlbumTrack> AlbumTracks { get; set; }
}
public class AlbumTrack
{
public int AlbumId { get; set; }
public virtual Album Album { get; set; }
public int TrackId { get; set; }
public virtual Track Track { get; set; }
public int Position { get; set; }
}
と私の EntityTypeConfiguration
public class AlbumTrackConfiguration : EntityTypeConfiguration<AlbumTrack>
{
public AlbumTrackConfiguration()
{
// AlbumTrack has a composite key
HasKey(at => new {at.AlbumId, at.TrackId});
// AlbumTrack has one Album, Albums have many AlbumTracks
HasRequired(at => at.Album)
.WithMany(a => a.AlbumTracks)
.HasForeignKey(at => at.AlbumId)
.WillCascadeOnDelete(true);
// AlbumTrack has one Track, Tracks have one AlbumTrack
HasRequired(at => at.Track)
.WithRequiredPrincipal(t=>t.AlbumTrack)
.WillCascadeOnDelete(true);
}
}
Albums と AlbumTracks の間の 1 対多の関係は問題ありませんが、予想されることに加えて、
[AlbumTrackId] [int] NOT NULL,
Code First は追加を続けます
[AlbumTrack_AlbumId] [int] NOT NULL,
[AlbumTrack_TrackId] [int] NOT NULL
トラック テーブルに。
指定したプロパティのみがデータベース フィールドで変換されるように、トラックとアルバム トラックの関係をより適切にモデル化するにはどうすればよいですか?
[はい、私の世界ではトラックは 1 つのアルバムにしか存在できません!]
ありがとう。