2017-02-22 44 views
0

我正在關注this,我的問題是這樣的: 如果在Post和Tag表之間有一個連接表,每當我想添加一個標籤列表到一篇文章我應該使用Post和Tag類的PostTags屬性?這是正確的方法嗎?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屬性和標籤類的工作?

如果您使用的above document的許多一對多的關係部分的示例代碼,答案是肯定的。您應該可以使用Post實體的PostTags屬性將記錄添加到PostTag表中。

如果你想的Tags列表添加到Post爲好Post重新創建你可以使用下面的代碼:如果你想添加的Tags列表的存在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(); 
} 

您可能會首先獲得該帖子,然後更新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與外國鍵PostIdTagId當您添加或更新記錄你需要滿足約束創建。 enter image description here