public String CreateLabel(String blogGuid, String title) { using (DataContext db = new DataContext(ServiceConfiguration.ConnectionString)) { //+ ensure blog exists BlogLINQ blogLinq; Validator.EnsureBlogExists(blogGuid, out blogLinq, db); //+ LabelLINQ labelLinq; String labelGuid; labelLinq = db.Labels.SingleOrDefault(p => p.BlogId == blogLinq.BlogId && p.LabelTitle == title); if (labelLinq != null) { labelGuid = labelLinq.LabelGuid; } else { labelLinq = new LabelLINQ(); labelLinq.LabelTitle = title; labelLinq.BlogId = blogLinq.BlogId; labelLinq.LabelGuid = Themelia.GuidCreator.GetNewGuid(); db.Labels.InsertOnSubmit(labelLinq); //+ db.SubmitChanges(); labelGuid = labelLinq.LabelGuid; } //+ return(labelGuid); } }
internal static void EnsureLabelExists(String labelGuid, out LabelLINQ labelLinq, String message, MinimaServiceLINQDataContext db) { Func <LabelLINQ, Boolean> labelExists = x => x.LabelGuid == labelGuid; labelLinq = db.Labels.SingleOrDefault(labelExists); if (labelLinq == null) { throw new ArgumentException(message); } }
//- @GetLabelByNetTitle-// public Label GetLabelByNetTitle(String netTitle) { using (DataContext db = new DataContext(ServiceConfiguration.ConnectionString)) { DataLoadOptions options = new DataLoadOptions(); options.LoadWith <LabelLINQ>(p => p.Blog); LabelLINQ labelLinq = db.Labels.SingleOrDefault(p => p.LabelNetTitle == netTitle); if (labelLinq == null) { return(null); } //+ return(new Label { BlogGuid = labelLinq.Blog.BlogGuid, FriendlyTitle = labelLinq.LabelFriendlyTitle, Guid = labelLinq.LabelGuid, Title = labelLinq.LabelTitle, BlogEntryCount = GetEntryCount(labelLinq, db) }); } }
//- ~EnsureLabelExists -// internal static void EnsureLabelExists(String labelGuid, out LabelLINQ labelLinq, MinimaServiceLINQDataContext db) { EnsureLabelExists(labelGuid, out labelLinq, Message.InvalidLabelGuid, db); }
//+ //- $GetEntryCount -// private Int32 GetEntryCount(LabelLINQ labelLinq, DataContext db) { return(db.LabelBlogEntries.Where(p => p.LabelId == labelLinq.LabelId).Count()); }