在SQL中,我有:在EF中删除多对多关系中的选定关系?
[波段] 1 ---- * [BandsGenres] * ---- 1 [流派]
在我的EF层,将其转换为:
[波段] * ---- * [文体]
(BandsGenres是BandId和GenreId)
我的问题是,我似乎无法弄清楚如何删除只是我需要的选定关系。基本上,我正在尝试更新乐队类型类型的列表。一个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列表的情况下删除/添加或更新我的乐队的流派关系列表?谢谢。