public static void InsertData(string username, string title, string url, string[] tags, string notes) { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions{ IsolationLevel = IsolationLevel.RepeatableRead })) { var context = new BookmarksEntities(); User user = CreateOrLoadUser(context, username); var bookmark = new Bookmark { User = user, Title = title, Notes = notes, Url = url }; foreach (var tagName in tags) { var tag = CreateOrLoadTag(context, tagName); bookmark.Tags.Add(tag); } context.Bookmarks.Add(bookmark); context.SaveChanges(); } }
private static Tag CreateOrLoadTag(BookmarksEntities context, string tagName) { var tag = context.Tags.FirstOrDefault(x => x.TagName == tagName); if (tag != null) { return tag; } var newTag = new Tag() { TagName = tagName }; context.Tags.Add(newTag); context.SaveChanges(); return newTag; }
private static User CreateOrLoadUser(BookmarksEntities context, string username) { var user = context.Users.FirstOrDefault(x => x.Username == username); if (user != null) { return user; } var newUser = new User() { Username = username }; context.Users.Add(newUser); context.SaveChanges(); return newUser; }