2 つのテーブル間に 1 対多の関係があり (ユーザーは複数のアルバムを持つことができます)、アルバム テーブルにも他のテーブルとの関係があります。問題は、アルバムを保存したいときに FOREIGN KEY 制約の例外が発生することですが、ユーザーは存在し、外部キーが指定されています。
例外は次のとおりです。
INSERT ステートメントが FOREIGN KEY 制約 "FK_Albums_CreatedBy" と競合しました。
データベース「{Database Name}」、テーブル「dbo.Users」、列「Id」で競合が発生しました。
ステートメントは終了されました。
これは、アルバム クラスのコンストラクター内のアルバムとユーザーのマッピング コードです。
this.HasRequired(t => t.CreatedBy)
.WithMany(t => t.Albums)
.HasForeignKey(d => d.CreatedById);
これは保存コードです:
private void InsertAlbum(MyContext context, Album album)
{
album.Guid = Guid.NewGuid();
album.CreatedDateTime = DateTime.Now;
album.CreatedBy = context.Users.Single(u => u.UserName == "SomeUser"); // User exists and has Id = 1
album.RowVersion = Guid.NewGuid();
// Assigning other relations...
context.Albums.Add(album);
context.SaveChanges(); // This is the place that the exception occurs.
}
アップデート
Albums テーブルには Metadatas テーブルとの別の 1 対多の関係があり、アルバムにメタデータを挿入しないと例外が発生しないため、エラーが実際には間違っていることがわかりました。エラーの原因と、間違ったエラーが表示される理由がわかりません。