Linq to sql linq到sql,插入多对多关系
我有三张桌子 Post:posted,PostName 标记:标记ID,标记名 PostTag:PostTagID,PostID,TagID 以下代码是我如何插入多对多的代码。但是我使用SubmitChanges()三次,我认为这不是最好的方法。我可以使用存储过程。但是,我想知道是否有更好的方法不用存储过程就可以做到这一点Linq to sql linq到sql,插入多对多关系,linq-to-sql,many-to-many,Linq To Sql,Many To Many,我有三张桌子 Post:posted,PostName 标记:标记ID,标记名 PostTag:PostTagID,PostID,TagID 以下代码是我如何插入多对多的代码。但是我使用SubmitChanges()三次,我认为这不是最好的方法。我可以使用存储过程。但是,我想知道是否有更好的方法不用存储过程就可以做到这一点 Post post = new Post() { PostName = entity.Post
Post post = new Post()
{
PostName = entity.PostName
};
context.Posts.InsertOnSubmit(post);
context.SubmitChanges();
Tag tag = new Tag()
{
TagName = entity.Tags
};
context.Tags.InsertOnSubmit(tag);
context.SubmitChanges();
PostTag pt = new PostTag()
{
PostID = post.PostID,
TagID = tag.TagID
};
context.PostTags.InsertOnSubmit(pt);
context.SubmitChanges();
您不需要提交三次更改。如果有适当的外键,只需在代码中相互添加引用,然后提交一次更改。林克真是太棒了
Post post = new Post()
{
PostName = entity.PostName
};
context.Posts.InsertOnSubmit(post);
Tag tag = new Tag()
{
TagName = entity.Tags
};
context.Tags.InsertOnSubmit(tag);
PostTag pt = new PostTag()
{
Post = post,
Tag = tag
};
context.PostTags.InsertOnSubmit(pt);
context.SubmitChanges();
您还可以仅对其中一个对象调用InsertOnSubmit。与相比,这是我的想法,我不需要它三次。我确实有合适的FK。我有两个FK。问题是如果我不做提交更改,我就不会得到新的帖子和标签。如何插入“PostTag”表?你能告诉我一些正确的代码吗?没错,这有点违反直觉,但是LINQ会在一次SubmitChanges调用中自动映射新的PostID和TagID。我已经发布了一个代码示例,但它正在编辑中,需要在您看到它之前获得批准。谢谢您,Hspain。迫不及待地想看看你的代码。我删除了前两个“SubmitChanges”,它立即失败,因为“TagID”和“PostID”没有生成。我能做的最好的事情就是从我的代码中删除第一次提交的更改。