【发布时间】:2022-01-08 00:17:18
【问题描述】:
我正在使用一个名为 MusicChannel 的 SQL 数据库,它将与艺术家一起保存新添加的歌曲。当我尝试添加一些东西时,它给了我一个错误提示:
SqlException:INSERT 语句与 FOREIGN KEY 约束“FK__Songs__ArtistID__36B12243”冲突。冲突发生在数据库“MusicChannel”、表“dbo.Artists”、列“ArtistID”中。 声明已终止。
我按照 Artists、MusicTypes 和 Songs 的顺序创建了表格。歌曲有 2 个 FK 作为 ArtistID 和 MusicTypeID。艺术家的PK是ArtistID。 MusicTypes 的 PK 是 MusicTypeID。这是因为名称相同吗?
这是模型:
public IActionResult Insert(NewSongVm formContent)
{
if (formContent.MusicTypeID == -1)
{
//
}
MusicChannelContext ctx = new MusicChannelContext();
Song song = new Song();
Artist artist = new Artist();
song.SongID = formContent.SongID;
song.SongName = formContent.SongName;
song.SongLength = formContent.SongLength;
song.SongLink = formContent.SongLink;
song.MusicTypeID = formContent.MusicTypeID;
song.ArtistID = formContent.ArtistID;
artist.ArtistID = formContent.ArtistID;
artist.ArtistName = formContent.ArtistName;
ctx.Artists.Add(artist);
ctx.Songs.Add(song);
ctx.SaveChanges();
return View();
}
//context:
public class MusicChannelContext:DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("server=.;database=MusicChannel;trusted_connection=true;");
}
public DbSet<Song> Songs { get; set; }
public DbSet<Artist> Artists { get; set; }
public DbSet<MusicType> MusicTypes { get; set; }
}
【问题讨论】:
-
错误不明白怎么办?它告诉你这里的问题。如果您解释什么让您感到困惑,我们可以尝试详细说明让您感到困惑的领域。
-
请查看thread。这可能会解决您的问题。
标签: c# sql sql-server asp.net-core