画像には多くのギャラリーがあり、ギャラリーには多くの画像があります。ギャラリーの画像を更新しようとしています。以下のコードは機能しますが、やや不器用に感じます。
var g=db.Galleries.Find(gal.Id);
var ims = gal.Images.Select(i => db.Images.Where(im => im.Id == i.Id && im.User.Id == user.Id)).SelectMany(im => im).ToList();
g.Name = gal.Name;
g.Images.Clear();
foreach (var im in ims)
{
g.Images.Add(im);
}
db.SaveChanges();
私がこれをするとき:
g.Images=ims;
それ以外の:
g.Images.Clear();
foreach (var im in ims)
{
g.Images.Add(im);
}
例外がスローされます:
Violation of PRIMARY KEY constraint 'PK_GalleryImages'. Cannot insert duplicate key in object 'dbo.GalleryImages'.
理由を説明できますか?これにアプローチするためのより良い方法はありますか?