/// <summary> /// Gets the configuration metadata list. /// </summary> /// <typeparam name="T">The type of metadata.</typeparam> /// <param name="conditions">The conditions dictionary.</param> /// <returns></returns> public List <T> GetConfigMetadataList <T>(Dictionary <string, object> conditions) where T : ConfigMetadata, new() { DB.AutoBox db = GetDB <T>(); if (db != null) { Type type = typeof(T); string tableName = type.Name; string sql = "from " + tableName + " where"; int i = 0; int length = conditions.Keys.Count; foreach (string key in conditions.Keys) { sql += " " + key + "==?"; if (i < length - 1) { sql += " &"; } i++; } List <object> values = new List <object>(conditions.Values); IBEnumerable <T> items = db.Select <T>(sql, values.ToArray()); return(new List <T>(items)); } return(null); }
/// <summary> /// Selects the data list by some conditions. /// </summary> /// <typeparam name="T">The type of data.</typeparam> /// <param name="tableName">Name of the table.</param> /// <param name="conditions">The conditions.</param> /// <returns></returns> public List <T> Select <T>(string tableName, Dictionary <string, object> conditions) where T : class, new() { try { using (m_db.Cube()) { string sql = "from " + tableName + " where"; int i = 0; int length = conditions.Keys.Count; foreach (string key in conditions.Keys) { sql += " " + key + "==?"; if (i < length - 1) { sql += " &"; } i++; } List <object> values = new List <object>(conditions.Values); IBEnumerable <T> items = m_db.Select <T>(sql, values.ToArray()); return(new List <T>(items)); } } catch (Exception) { throw; } }
public LoginCommandResult Execute(LoginCommand loginCommand) { var hashedPassword = Hasher.GetMd5Hash(loginCommand.Password); if (_db.SelectCount("from " + DBTableNames.Authors) == 0) { _db.Insert(DBTableNames.Authors, new Author { Email = "*****@*****.**", DisplayName = "mzblog", Roles = new[] { "admin" }, HashedPassword = Hasher.GetMd5Hash("mzblog") }); } var author = from u in _db.Select <Author>("from " + DBTableNames.Authors) where u.Email == loginCommand.Email && u.HashedPassword == hashedPassword select u; if (author.Count() > 0) { return new LoginCommandResult() { Author = author.FirstOrDefault() } } ; return(new LoginCommandResult(trrorMessage: "用户名或密码不正确") { }); } }
public TagCloudViewModel Project(TagCloudBindingModel input) { var result = new Dictionary <Tag, int>(); var tags = _db.Select <Tag>("from " + DBTableNames.Tags + " order by PostCount desc"); return(new TagCloudViewModel { Tags = tags }); }
public CommandResult Execute(DeletePostCommand command) { var comments = _db.Select <BlogComment>("from " + DBTableNames.BlogComments + " where PostId==?", command.PostId); if (comments.Count() > 0) { var commentKeys = comments.Select(s => s.Id).ToArray(); _db.Delete(DBTableNames.BlogComments, commentKeys); } _db.Delete(DBTableNames.BlogPosts, command.PostId); return(CommandResult.SuccessResult); }
public BlogPostDetailsViewModel Project(BlogPostDetailsBindingModel input) { var post = _db.Select <BlogPost>("from " + DBTableNames.BlogPosts + " where TitleSlug==?", input.Permalink).FirstOrDefault(); if (post == null) { return(null); } post.ViewCount++; _db.Update(DBTableNames.BlogPosts, post); var comments = _db.Select <BlogComment>("from " + DBTableNames.BlogComments + " where PostId ==?", post.Id) .OrderBy(o => o.CreatedTime) .ToArray(); return(new BlogPostDetailsViewModel { BlogPost = post, Comments = comments }); }
public IntervalBlogPostsViewModel Project(IntervalBlogPostsBindingModel input) { var posts = from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts) where p.IsPublished && p.PubDate <input.ToDate && p.PubDate> input.FromDate orderby p.PubDate descending select p; return(new IntervalBlogPostsViewModel { Posts = posts, FromDate = input.FromDate, ToDate = input.ToDate }); }
public AllBlogCommentsViewModel Project(AllBlogCommentsBindingModel input) { var skip = (input.Page - 1) * input.Take; var comments = _db.Select <BlogComment>("from " + DBTableNames.BlogComments + " order by CreatedTime desc limit " + skip + "," + input.Take + 1) .ToList().AsReadOnly(); var pagedComments = comments.Take(input.Take); var hasNextPage = comments.Count > input.Take; return(new AllBlogCommentsViewModel { Comments = pagedComments, Page = input.Page, HasNextPage = hasNextPage }); }
public RecentBlogPostSummaryViewModel Project(RecentBlogPostSummaryBindingModel input) { var titles = (from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts) where p.IsPublished orderby p.PubDate descending select new BlogPostSummary { Title = p.Title, Link = p.GetLink() } ) .Take(input.Page) .ToList() .AsReadOnly(); return(new RecentBlogPostSummaryViewModel { BlogPostsSummaries = titles }); }
private void BtnExecute_Click(object sender, RoutedEventArgs e) { var sql = this.tbSql.SelectedText; if (string.IsNullOrWhiteSpace(sql)) { sql = this.tbSql.Text; } if (string.IsNullOrWhiteSpace(sql)) { System.Windows.MessageBox.Show("Please input your querying sentence", "Warning"); return; } if (server == null || server.IsClosed()) { System.Windows.MessageBox.Show("Please connect before querying", "Warning"); return; } var ql = string.Empty; var args = new string[0]; var ci = sql.IndexOf(','); if (ci != -1) { ql = sql.Substring(0..ci); if (ci < sql.Length - 1) { args = sql.Substring(ci + 1).Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); } } else { ql = sql; } var locals = db.Select(ql, args); var dt = locals.ToDataTable(); this.dg.ItemsSource = dt.DefaultView; }
public TaggedBlogPostsViewModel Project(TaggedBlogPostsBindingModel input) { var posts = (from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts) where p.IsPublished && p.Tags.Contains(input.Tag) orderby p.PubDate descending select p) .ToList(); if (posts.Count == 0) { return(null); } var tagName = _db.SelectKey <Tag>(DBTableNames.Tags, posts.First().Tags[0]).Name; return(new TaggedBlogPostsViewModel { Posts = posts, Tag = tagName }); }
public AllBlogPostsViewModel Project(AllBlogPostsBindingModel input) { var skip = (input.Page - 1) * input.Take; var posts = (from p in _db.Select <BlogPost>("from " + DBTableNames.BlogPosts) orderby p.DateUTC descending select p) .Skip(skip) .Take(input.Take + 1) .ToList() .AsReadOnly(); var pagedPosts = posts.Take(input.Take); var hasNextPage = posts.Count > input.Take; return(new AllBlogPostsViewModel { Posts = pagedPosts, Page = input.Page, HasNextPage = hasNextPage }); }
/// <summary> /// Gets the table local address. /// </summary> /// <typeparam name="T">The type of object.</typeparam> /// <returns>The local address of table.</returns> private long GetTableLocalAddress <T>() where T : ConfigMetadata { if (m_tableIndexDB == null) { CreateTableIndexDB(); } Type type = typeof(T); string sql = string.Format("from {0} where typeNamespace==? & typeName==?", MetadataLocalAddress.TableName); IBEnumerable <MetadataLocalAddress> items = m_tableIndexDB.Select <MetadataLocalAddress>(sql, type.Namespace, type.Name); if (items != null) { List <MetadataLocalAddress> list = new List <MetadataLocalAddress>(items); if (list.Count > 0) { return(list[0].localAddress); } } return(-1); }
public static bool Test(bool background) { var bakAddr = 0 - Math.Abs(DateTime.Now.Ticks); DDebug.DeleteDBFiles(1); DB server = new DB(1); server.SetBoxRecycler(new FileBackupBoxRecycler()); server.GetConfig().EnsureTable <DBObject>("DBObject", "ID"); DB.AutoBox auto = server.Open(); Parallel.For(0, 300, (i) => { var obj = new DBObject(); obj.ID = auto.NewId(0); obj.Value = "Value " + obj.ID; obj.DT = DateTime.Now; auto.Insert("DBObject", obj); }); // Export if (background) { Thread backupThread = new Thread(() => { ((FileBackupBoxRecycler)auto.GetDatabase().GetBoxRecycler()).Phase1(auto.GetDatabase(), bakAddr); }); backupThread.Start(); Parallel.For(0, 300, (i) => { var obj = new DBObject(); obj.ID = auto.NewId(0); obj.Value = "Value " + obj.ID; obj.DT = DateTime.Now; auto.Insert("DBObject", obj); }); backupThread.Join(); ((FileBackupBoxRecycler)auto.GetDatabase().GetBoxRecycler()).Phase2(); } else { ((FileBackupBoxRecycler)auto.GetDatabase().GetBoxRecycler()).Backup(auto.GetDatabase(), bakAddr); } //Import DB bakserver = new DB(bakAddr); bakserver.GetConfig().DBConfig.SwapFileBuffer = 0; DB.AutoBox bakauto = bakserver.Open(); DBObject[] s1 = auto.Select <DBObject>("from DBObject").ToArray(); DBObject[] s2 = bakauto.Select <DBObject>("from DBObject").ToArray(); server.Dispose(); bakserver.Dispose(); DDebug.DeleteDBFiles(bakAddr); return(s1.SequenceEqual(s2)); }
/// <summary> /// 根据QL语句获取数据 /// </summary> public List <T> GetDatasByQL <T>(string QL, object param) where T : class, new() { return(_autoBox.Select <T>(QL, param)); }