Вот как мы определяем публикацию и тег, которые имеют отношение «многие-многие» друг к другу:
Код: Выделить всё
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public ICollection Tags { get; set; }
}
public class Tag
{
public string TagId { get; set; }
public ICollection
Posts { get; set; }
}
Однако не упомянуто, как вставить сообщение со связью с тегами или наоборот.< /p>
Код: Выделить всё
db.Posts.Add(new Post { Title="Title1", Content="Content1"});
db.Posts.Add(new Post { Title="Title2", Content="Content2"});
db.Tags.Add(new Tag { TagId="Tag1"});
db.Tags.Add(new Tag { TagId="Tag2"});
db.SaveChanges();
Это мой код:
Код: Выделить всё
ICollection tags = new List {db.Tags.FirstOrDefault(i => i.TagId="Tag1"), db.Tags.FirstOrDefault(i => i.TagId="Tag2")};
db.Posts.Add(new Post { Title="Title3", Content="Content3", Tags=tags});
db.SaveChanges();
Обновлено: спасибо всем за помощь. Обнаружил, что допустил ошибку в своем реальном коде. Это мой настоящий код:
Код: Выделить всё
vICollection tags = new List {db.Tags.FirstOrDefault(i => i.TagId="Tag1"), db.Tags.FirstOrDefault(i => i.TagId="Tag2")};
var post3 = new Post { Title="Title3", Content="Content3"};
db.Posts.Add(post3);
post3.Tags = tags; // wrong position, should be called before db.Posts.Add(post3)
db.SaveChanges();
Код: Выделить всё
vICollection tags = new List {db.Tags.FirstOrDefault(i => i.TagId="Tag1"), db.Tags.FirstOrDefault(i => i.TagId="Tag2")};
var post3 = new Post { Title="Title3", Content="Content3"};
post3.Tags = tags; // correct position
db.Posts.Add(post3);
db.SaveChanges();
Подробнее здесь: https://stackoverflow.com/questions/660 ... -to-insert