2017-02-22 52 views
0

Я следую this, и мой вопрос: Если есть таблица соединений между таблицами Post и Tag, всякий раз, когда я хочу добавить список тегов в a Post Я должен работать с свойствами PostTags из классов Post и Tag? Это правильный подход?UWP и SQLite: Как работать с отношениями «многие-ко-многим»

Это код, который я имею в виду:

public class Post 
{ 
    public int PostId { get; set; } 
    public string Title { get; set; } 
    public string Content { get; set; } 

    public List<PostTag> PostTags { get; set; } 
} 

public class Tag 
{ 
    public string TagId { get; set; } 

    public List<PostTag> PostTags { get; set; } 
} 

public class PostTag 
{ 
    public int PostId { get; set; } 
    public Post Post { get; set; } 

    public string TagId { get; set; } 
    public Tag Tag { get; set; } 
} 

ответ

0

всякий раз, когда я хочу, чтобы добавить теги к столбу я должен работать с PostTags свойствами от Post и классов тегов?

Если вы используете пример кода, многочастичных ко-многим частям в above document, ответ да. Вы должны иметь возможность использовать свойство PostTags объекта Post для добавления записей в таблицу PostTag.

Если вы хотите добавить список Tags к Post а также Post вновь создать вы можете использовать следующий код:

using (var db = new MyContext()) 
{ 
    var posttag = new PostTag { TagId = txttagjoinId.Text }; 
    Post newone = new Post() 
    { 
     Content = "new content", 
     Title = "new title" 
    }; 
    newone.PostTags = new List<PostTag>() { posttag };  
    db.Posts.Add(newone);     
    db.SaveChanges(); 
} 

Если вы хотите добавить список Tags к существовавшему Post вы можете сначала получить сообщение, а затем обновить свойство PostTags. Следующий код добавить Tags список первой Post записи:

using (var db = new MyContext()) 
{ 
    var posttag = new PostTag { TagId = txttagjoinId.Text }; 
    List<Post> allposts = db.Posts.ToList(); 
    allposts[0].PostTags = new List<PostTag>() { posttag }; 
    db.Posts.Update(allposts[0]); 
    db.SaveChanges(); 
} 

Если добавить public DbSet<PostTag> PostTags { get; set; } к MyContext класса, вам не нужно PostTags свойство, вы должны иметь возможность добавлять записи в PostTag таблицу следующим образом, но которые может быть не рекомендуются:

using (var db = new MyContext()) 
{ 
    var posttag = new PostTag { TagId = txttagjoinId.Text, PostId = 1 }; 
    db.PostTags.Add(posttag); 
    db.SaveChanges(); 
} 

Обратите внимание таблицы PostTags была создана с иностранным клавишем PostId и TagId, что при добавлении или обновления записей, которые необходимо удовлетворять ограничения. enter image description here