Wierd question title ...linq to sql datacontext, en insérant des objets et en récupérant l'identifiant et en l'ajoutant à une autre table?
Ce que j'essaie d'accomplir est assez simple je pense.
J'ai eu 3 tables dans la base de données,
BlogPost - BlogPostTagsConnection - Mots
Le blogpost contient du texte, le titre, limace, auteur, id etc. BlogPostTagsConnection contient le BlogPost id et les tags id et enfin les tags contient tagid et tag.
donc j'ai essayé de comprendre comment insérer un nouveau record (et éventuellement mettre à jour un):
public void Create(BlogPost post)
{
DB db = new DB();
var matchingTags = from data in db.Tags
where (from tagsInPost in post.Tags select tagsInPost.TagName).Contains(data.Tag)
select new Tag() {TagId = data.TagID, TagName = data.Tag};
var post2 = new DataBlogPost
{
Title = post.Title,
Text = post.Text,
Slug = post.Slug,
ShortDescription = post.ShortDescription,
Published = post.Published,
Author = post.Author
};
db.DataBlogPosts.InsertOnSubmit(post2);
... <- insert the tags and retrieve the id from the tags and the blogpost
... <- insert the ids from the tags and blogposts to the blogpoststagsconnection table
db.SubmitChanges();
}
d'abord, je reçois toutes les balises de la base de données correspondant aux balises que je l'ai écrit dans mon blogpost. Les tags sont enregistrés dans une liste avec des tags {TagID, Tag}.
Ensuite, j'insère mon nouveau message dans la base de données (post2). Après cela, j'ai besoin d'insérer tous les tags (que j'ai créés avec mon blog), donc si je l'ai écrit dans la balise tags "tag1 tag2 tag3 tag4" et que ma base de données contient déjà tag1 et tag2, elle devrait alors créer 2 nouveaux enregistrements, un pour tag3 et un pour tag4.
J'ai alors besoin d'obtenir l'id du blogpost généré en quelque sorte et aussi l'id de tag3 et tag4 pour pouvoir les insérer dans BlogPostTagsConnection.
Mais comment récupérer l'ID? ou existe-t-il un moyen plus simple de gérer ces inserts?