Linq to sql linq到sql,插入多对多关系

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:posted,PostName

标记:标记ID,标记名

PostTag:PostTagID,PostID,TagID

以下代码是我如何插入多对多的代码。但是我使用SubmitChanges()三次,我认为这不是最好的方法。我可以使用存储过程。但是,我想知道是否有更好的方法不用存储过程就可以做到这一点

           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”没有生成。我能做的最好的事情就是从我的代码中删除第一次提交的更改。