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(); } }
static void Main(string[] args) { db = new BookmarksEntities(); ImportXml(); }
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; }
public static void ExecureQueriesFromXml(string filePath) { BookmarksEntities context = new BookmarksEntities(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load("../../query.xml"); string pathQuery = "/query"; XmlNodeList xmlQuery = xmlDocument.SelectNodes(pathQuery); foreach (XmlNode node in xmlQuery) { string username = node.GetInnerText("username"); string tag = node.GetInnerText("tag"); var query = from b in context.Bookmarks select b; if (username != null) { query = context.Bookmarks.Where(x => x.User.Username == username); } query = query.Where(b => b.Tags.Any(t => t.TagName == tag)); query = query.OrderBy(x => x.Url); foreach (var bookmark in query.ToList()) { Console.WriteLine(bookmark.Url); } } }
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; }