Witam,
Problem dotyczy braku powiązywania relacjami wpisów z 2 tabel.
Utworzyłem 2 klasy:
Plik:
public class File
{
public int FileId {get; set;}
public string Name{get; set;{
public ICollection<int> TagId {get; set;}
public virtual ICollection<Tag> Tag {get; set;}
}
Tag:
public class Tag
{
public int TagId {get; set;}
public string Name {get; set;}
public ICollection<int> FileId {get; set;}
public ICollection<File> File {get; set;}
}
Tworzenie tabel:
public DbSet<File> Files { get; set; }
public DbSet<Tag> Tags{ get; set; }
W bazie danych utworzyła mi się dodatkowo tabela TagFile, w której znajdują się relacje pomiędzy tabelami.
Dopisałem klasę StartInitializer, która inicjuje mi bazę danych za każdym razem na nowo. Wewnątrz metody inicjalizującej dodaję nowe rekordy:
...
var tags = new List<Tag>
{
new Tag() { TagId = 1, Name = "A"},
new Tag() { TagId = 2, Name = "B"},
new Tag() { TagId = 3, Name = "C"},
new Tag() { TagId = 4, Name = "D"},
new Tag() { TagId = 5, Name = "E"},
new Tag() { TagId = 6, Name = "F"},
new Tag() { TagId = 7, Name = "G"}
};
tags.ForEach(g => context.Tags.Add(g));
context.SaveChanges();
var files = new List<File>
{
new File() { FileId = 1, Name = "1", TagId = new List<int>{1, 3, 2, 4}}
};
files.ForEach(g => context.Files.Add(g));
context.SaveChanges();
Niestety wpisy w tabeli FileTag nie dodają się automatycznie, chociaż wydaje mi się że TagId = new List<int>{1, 3, 2, 4} powinien to zapewniać. Czegoś tu brakuje?