Ahoj, začínám s Entity Frameworkem a zkouším si udělat databázovou filmovou knihovnu. Mám problém s vazbou M*M. Z databáze načítám / ukládám žánry , pokud tam je tak se pouze přiřadí k filmu a pokud ne tak se přidá nový do databáze. Problém se že se přidá vždycky ikdyž existuje.
using (var db = new CSFDLocalEntities1())
{
foreach (string genre in genres)
{
Genre genreInDb = db.Genres.Where(x => x.Genre1 == genre).SingleOrDefault();
if (genreInDb == null)
{
film.Genres.Add(new Genre() { Genre1 = genre });
}
else
{
Genre g = new Genre { IdGenre = genreInDb.IdGenre, Genre1 = genreInDb.Genre1 };
film.Genres.Add(g);
}
}
db.Films.Add(film);
db.SaveChanges();
}
Třídy pro Filmy a Žánry
public partial class Film
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Genre> Genres { get; set; }
public Film()
{
this.Genres = new HashSet<Genre>();
}
}
public partial class Genre
{
public int IdGenre { get; set; }
public string Genre1 { get; set; }
public virtual ICollection<Film> Films { get; set; }
public Genre()
{
this.Films = new HashSet<Film>();
}
}
Navrh modelu
Při přidání filmu do databáze je přidán i žánr do tabulky žánru, přestože již v tabulce existuje. Kde by mohl být problém? Děkuji za odpověď :)