我关注this,我的问题是: 如果Post和Tag表之间有一个连接表,每当我想在Post中添加一个Tags列表时,我应该使用Post和Tag类的PostTags属性吗?这是正确的方法吗?
这是我正在谈论的代码:
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 :(得分:0)
每当我想在帖子中添加标签列表时,我应该使用Post和Tag类的PostTags属性吗?
如果您使用的是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();
}