, I는 가지고EF에서 다 대다 관계에서 선택된 관계를 삭제 하시겠습니까? SQL에서
[밴드] 1 ---- * BandsGenres * ---- 1 장르] 내 EF 층에서
, 그것이 번역에 :
[밴드] * ---- * [장르]
(BandsGenres BandId 및 GenreId입니다)
내 문제는 내가 삭제하는 방법을 알아낼 수없는 것입니다내가 선택한 선정 된 관계. 기본적으로 밴드 장르 목록을 업데이트하려고합니다. Guids의 목록이 전달되고 조인을 사용하여 Guid를 가져올 수 있습니다. 그러나 .Remove() 메서드는 이전 장르를 제거하고 새로운 장르를 추가하는 것이 아닙니다. .Attach (g) 및 .DeleteObject (g)를 사용하여 시도했지만 관계 대신 실제 장르 (장르)를 제거했습니다.
public void UpdateBandGenres(Guid bandId, IEnumerable<Guid> genres)
{
using (var ctx = new OpenGroovesEntities())
{
var newGenres = from g in ctx.Genres
join t in genres on g.GenreId equals t
select g;
//var bandGenres = ctx.Genres.Include("Bands").Where(g => g.Bands.Any(b => b.BandId == bandId));
var bandGenres = ctx.Bands.SingleOrDefault(b => b.BandId == bandId).Genres;
bandGenres.ToList().ForEach(g =>
{
bandGenres.Remove(g);
});
newGenres.ToList().ForEach(g => bandGenres.Add(g));
ctx.SaveChanges();
}
}
장르 ID 목록이있는 경우 어떻게 밴드의 장르 관계 목록을 삭제하거나 추가하거나 업데이트 할 수 있습니까? 감사. 내가 correcly 문제를 이해한다면