Лишний айди для связи с базовым классом в бд Entity Framework
У меня возникла проблема, что ef core создает лишний внешний ключ
вот таблица из бд, мне неизвестен ключ что за AuthorForMusicId
бд - postgres
код класса для автора музыки
public class AuthorForMusic : BaseUser
{
public List<Music> CreatedMusics { get; set; } = [];
public List<Album> Album { get; set; } = [];
}
базовый класс для автора
public abstract class BaseUser
{
public Guid Id { get; set; }
public string Avatar { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string Password { get; set; } = string.Empty;
public List<Music> Favourites { get; set; } = [];
public List<Playlist> Playlists { get; set; } = [];
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
класс музыки
public class Music
{
public Guid Id { get; set; }
public Guid AuthorId { get; set; }
public AuthorForMusic? Author { get; set; }
public string Avatar { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string Audio { get; set; } = string.Empty;
public MusicCategories Category { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public List<Playlist> Playlist { get; set; } = [];
public List<User> WhoFavorited { get; set; } = [];
public Album? Album { get; set; }
public Guid AlbumId { get; set; }
}
конфигурация для автора
public void Configure(EntityTypeBuilder<AuthorForMusic> builder)
{
builder.HasBaseType<BaseUser>();
builder.ToTable("BaseUser");
builder
.HasMany(x => x.CreatedMusics)
.WithOne(p => p.Author)
.HasForeignKey(x => x.AuthorId);
builder
.HasMany(a => a.Album)
.WithOne(a => a.Author)
.HasForeignKey(k => k.AuthorId);
}
конфигурация для музыки
public void Configure(EntityTypeBuilder<Music> builder)
{
builder.HasKey(x => x.Id);
builder
.HasMany(x => x.Playlist)
.WithMany(p => p.MusicList);
builder
.HasMany(m => m.WhoFavorited)
.WithMany(u => u.Favourites);
builder
.HasOne(x => x.Author)
.WithMany(x => x.CreatedMusics)
.HasForeignKey(x => x.AuthorId);
}
вот что в консоли пишет ef core
CONSTRAINT "FK_Musics_BaseUser_AuthorForMusicId" FOREIGN KEY ("AuthorForMusicId")REFERENCES "BaseUser" ("Id"),
CONSTRAINT "FK_Musics_BaseUser_AuthorId" FOREIGN KEY ("AuthorId") REFERENCES "BaseUser" ("Id") ON DELETE CASCADE
Ответы (1 шт):
Автор решения: Guzya
→ Ссылка
Может при каком-то предыдущем прогоне создалось. Чтобы проверить, либо зачистите текущую бд, либо создайте новую и посмотрите появилась ли связь.