internal BucketStatistics GetFullStatistics() { BucketStatistics ret = new BucketStatistics(); ret.Name = _Bucket.Name; ret.GUID = _Bucket.GUID; ret.Objects = 0; ret.Bytes = 0; string countQuery = "SELECT COUNT(*) AS numobjects, SUM(contentlength) AS totalbytes FROM objects WHERE bucketguid = '" + _Bucket.GUID + "'"; DataTable result = _ORM.Query(countQuery); if (result != null && result.Rows.Count == 1) { if (result.Rows[0].Table.Columns.Contains("numobjects") && result.Rows[0]["NumObjects"] != DBNull.Value && result.Rows[0]["NumObjects"] != null) { ret.Objects = Convert.ToInt64(result.Rows[0]["numobjects"]); } if (result.Rows[0].Table.Columns.Contains("totalbytes") && result.Rows[0]["TotalBytes"] != DBNull.Value && result.Rows[0]["TotalBytes"] != null) { ret.Bytes = Convert.ToInt64(result.Rows[0]["totalbytes"]); } } return(ret); }
/// <summary> /// Authorize a user's request against a resource by operation type. /// </summary> /// <param name="username">The name of the user.</param> /// <param name="operation">The type of operation.</param> /// <param name="resource">The resource.</param> /// <param name="metadata">Request metadata, included in events.</param> /// <returns>True if authorized.</returns> public bool Authorize(string username, string operation, string resource, object metadata = null) { if (String.IsNullOrEmpty(username)) { throw new ArgumentNullException(nameof(username)); } if (String.IsNullOrEmpty(resource)) { throw new ArgumentNullException(nameof(resource)); } if (String.IsNullOrEmpty(operation)) { throw new ArgumentNullException(nameof(operation)); } bool authorized = false; DataTable table = null; List <MatchingEntry> matchingEntries = null; try { string query = AuthorizeQuery(username, operation, resource); Console.WriteLine(query); table = _ORM.Query(query); matchingEntries = MatchingEntry.FromDataTable(table); if (matchingEntries != null && matchingEntries.Count > 0) { if (matchingEntries.Any(e => e.Allow)) { authorized = true; } } else { authorized = DefaultPermit; } } finally { Task unawaited = Task.Run(() => AuthorizationEvent?.Invoke(this, new AuthorizationEventArgs(username, resource, operation, authorized, matchingEntries, metadata)) ); } return(authorized); }
/// <summary> /// Retrieve data from the database using the supplied query. /// </summary> /// <returns>DatabaseCrawlResult.</returns> public CrawlResult Get() { CrawlResult ret = new CrawlResult(); try { DataTable result = _ORM.Query(_Query); ret.Success = true; ret.DataTable = result; } catch (Exception e) { ret.Exception = e; } ret.Time.End = DateTime.UtcNow; return(ret); }
/// <summary> /// Instantiate the IndexEngine. /// </summary> /// <param name="databaseFile">Database filename to use. If this file does not exist, it will be created for you.</param> public IndexEngine(string databaseFile) { if (String.IsNullOrEmpty(databaseFile)) { throw new ArgumentNullException(databaseFile); } _Token = _TokenSource.Token; _DbFilename = databaseFile; _DbSettings = new DatabaseSettings(_DbFilename); _ORM = new WatsonORM(_DbSettings); _CurrentThreads = 0; _ORM.InitializeDatabase(); _ORM.InitializeTable(typeof(Document)); _ORM.InitializeTable(typeof(IndexEntry)); _ORM.Query("PRAGMA journal_mode = TRUNCATE"); }
/// <summary> /// Retrieve the object map containing the metadata for a given address within the original object. /// </summary> /// <param name="key">Object key.</param> /// <param name="position">Starting byte position.</param> /// <returns>Dedupe object map.</returns> public override DedupeObjectMap GetObjectMapForPosition(string key, long position) { if (String.IsNullOrEmpty(key)) { throw new ArgumentNullException(nameof(key)); } if (position < 0) { throw new ArgumentOutOfRangeException("Start of range must be zero or greater."); } key = DedupeCommon.SanitizeString(key); DedupeObject obj = GetObjectMetadata(key); if (obj == null) { return(null); } string objMapTable = _ORM.GetTableName(typeof(DedupeObjectMap)); string objKeyCol = _ORM.GetColumnName <DedupeObjectMap>(nameof(DedupeObjectMap.ObjectKey)); string chunkAddrCol = _ORM.GetColumnName <DedupeObjectMap>(nameof(DedupeObjectMap.ChunkAddress)); string chunkLenCol = _ORM.GetColumnName <DedupeObjectMap>(nameof(DedupeObjectMap.ChunkLength)); string query = "SELECT * FROM " + objMapTable + " " + "WHERE " + " " + objKeyCol + " = '" + obj.Key + "' " + " AND " + chunkAddrCol + " <= " + position + " AND " + chunkAddrCol + " + " + chunkLenCol + " > " + position + " "; DedupeObjectMap map = null; DataTable result = _ORM.Query(query); if (result != null && result.Rows.Count > 0) { map = _ORM.DataRowToObject <DedupeObjectMap>(result.Rows[0]); } return(map); }
static void Main(string[] args) { try { #region Setup Console.Write("DB type [sqlserver|mysql|postgresql|sqlite]: "); _DbType = Console.ReadLine(); if (String.IsNullOrEmpty(_DbType)) { return; } _DbType = _DbType.ToLower(); if (_DbType.Equals("sqlserver") || _DbType.Equals("mysql") || _DbType.Equals("postgresql")) { Console.Write("User: "******"Password: "******"sqlserver": _Settings = new DatabaseSettings(DbTypes.SqlServer, "localhost", 1433, _Username, _Password, "test"); break; case "mysql": _Settings = new DatabaseSettings(DbTypes.Mysql, "localhost", 3306, _Username, _Password, "test"); break; case "postgresql": _Settings = new DatabaseSettings(DbTypes.Postgresql, "localhost", 5432, _Username, _Password, "test"); break; default: return; } } else if (_DbType.Equals("sqlite")) { Console.Write("Filename: "); _Filename = Console.ReadLine(); if (String.IsNullOrEmpty(_Filename)) { return; } _Settings = new DatabaseSettings(_Filename); } else { Console.WriteLine("Invalid database type."); return; } _Orm = new WatsonORM(_Settings); _Orm.InitializeDatabase(); DebugSettings debug = new DebugSettings(); debug.DatabaseQueries = true; debug.DatabaseResults = true; _Orm.Logger = Logger; _Orm.Debug = debug; _Orm.InitializeTable(typeof(Person)); _Orm.TruncateTable(typeof(Person)); Console.WriteLine("Using table: " + _Orm.GetTableName(typeof(Person))); #endregion #region Insert-Records Person p1 = new Person("Abraham", "Lincoln", Convert.ToDateTime("1/1/1980"), null, 42, null, "initial notes p1", PersonType.Human, null, false); Person p2 = new Person("Ronald", "Reagan", Convert.ToDateTime("2/2/1981"), Convert.ToDateTime("3/3/1982"), 43, 43, "initial notes p2", PersonType.Cat, PersonType.Cat, true); Person p3 = new Person("George", "Bush", Convert.ToDateTime("3/3/1982"), null, 44, null, "initial notes p3", PersonType.Dog, PersonType.Dog, false); Person p4 = new Person("Barack", "Obama", Convert.ToDateTime("4/4/1983"), Convert.ToDateTime("5/5/1983"), 45, null, "initial notes p4", PersonType.Human, null, true); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p1"); p1 = _Orm.Insert <Person>(p1); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p2"); p2 = _Orm.Insert <Person>(p2); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p3"); p3 = _Orm.Insert <Person>(p3); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p4"); p4 = _Orm.Insert <Person>(p4); #endregion #region Insert-Multiple-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p5 through p8"); Person p5 = new Person("Jason", "Christner", Convert.ToDateTime("4/21/2020"), null, 1, null, "initial notes p5", PersonType.Human, null, false); Person p6 = new Person("Maria", "Sanchez", Convert.ToDateTime("10/10/1982"), Convert.ToDateTime("10/10/1982"), 38, null, "initial notes p6", PersonType.Cat, PersonType.Cat, true); Person p7 = new Person("Eddie", "Van Halen", Convert.ToDateTime("3/3/1982"), null, 44, null, "initial notes p7", PersonType.Dog, PersonType.Dog, false); Person p8 = new Person("Steve", "Vai", Convert.ToDateTime("4/4/1983"), Convert.ToDateTime("5/5/1983"), 45, null, "initial notes p8", PersonType.Human, null, true); List <Person> people = new List <Person> { p5, p6, p7, p8 }; _Orm.InsertMultiple <Person>(people); #endregion #region Exists-Count-Sum for (int i = 0; i < 8; i++) { Console.WriteLine(""); } DbExpression existsExpression = new DbExpression(_Orm.GetColumnName <Person>(nameof(Person.Id)), DbOperators.GreaterThan, 0); Console.WriteLine("| Checking existence of records: " + _Orm.Exists <Person>(existsExpression)); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } DbExpression countExpression = new DbExpression(_Orm.GetColumnName <Person>(nameof(Person.Id)), DbOperators.GreaterThan, 2); Console.WriteLine("| Checking count of records: " + _Orm.Count <Person>(countExpression)); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Checking sum of ages: " + _Orm.Sum <Person>(_Orm.GetColumnName <Person>(nameof(Person.Age)), existsExpression)); #endregion #region Select for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting many by column name"); DbExpression eSelect1 = new DbExpression("id", DbOperators.GreaterThan, 0); List <Person> selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect1); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting many by property name"); DbExpression eSelect2 = new DbExpression( _Orm.GetColumnName <Person>(nameof(Person.FirstName)), DbOperators.Equals, "Abraham"); List <Person> selectedList2 = _Orm.SelectMany <Person>(null, null, eSelect2); Console.WriteLine("| Retrieved: " + selectedList2.Count + " records"); foreach (Person curr in selectedList2) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by ID"); Person pSelected = _Orm.SelectByPrimaryKey <Person>(3); Console.WriteLine("| Selected: " + pSelected.ToString()); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting first by column name"); DbExpression eSelect3 = new DbExpression("id", DbOperators.Equals, 4); pSelected = _Orm.SelectFirst <Person>(eSelect3); Console.WriteLine("| Selected: " + pSelected.ToString()); #endregion #region Update-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p1"); p1.Notes = "updated notes p1"; p1 = _Orm.Update <Person>(p1); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p2"); p2.Notes = "updated notes p2"; p2 = _Orm.Update <Person>(p2); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p3"); p3.Notes = "updated notes p3"; p3 = _Orm.Update <Person>(p3); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p4"); p4.Notes = "updated notes p4"; p4 = _Orm.Update <Person>(p4); #endregion #region Update-Many-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating many records"); Dictionary <string, object> updateVals = new Dictionary <string, object>(); updateVals.Add(_Orm.GetColumnName <Person>("Notes"), "Updated during update many!"); _Orm.UpdateMany <Person>(eSelect1, updateVals); #endregion #region Select for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting many, test 1"); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect1); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by ID"); pSelected = _Orm.SelectByPrimaryKey <Person>(3); Console.WriteLine("| Selected: " + pSelected.ToString()); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting first"); pSelected = _Orm.SelectFirst <Person>(eSelect2); Console.WriteLine("| Selected: " + pSelected.ToString()); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting between, test 1"); DbExpression eSelect4 = DbExpression.Between("id", new List <object> { 2, 4 }); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect4); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by persontype"); DbExpression eSelect5 = new DbExpression("persontype", DbOperators.Equals, PersonType.Dog); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect5); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting handsome people"); DbExpression eSelect6 = new DbExpression("ishandsome", DbOperators.Equals, true); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect6); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by reverse ID order"); DbExpression eSelect7 = new DbExpression("id", DbOperators.GreaterThan, 0); DbResultOrder[] resultOrder = new DbResultOrder[1]; resultOrder[0] = new DbResultOrder("id", DbOrderDirection.Descending); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect7, resultOrder); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } #endregion #region Exception for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Catching exception and displaying query"); try { _Orm.Query("SELECT * FROM person ((("); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("Query : " + e.Data["Query"]); } #endregion #region Delete-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Deleting p1"); _Orm.Delete <Person>(p1); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Deleting p2"); _Orm.DeleteByPrimaryKey <Person>(2); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Deleting p3 and p4"); DbExpression eDelete = new DbExpression("id", DbOperators.GreaterThan, 2); _Orm.DeleteMany <Person>(eDelete); #endregion } catch (Exception e) { // Get stack trace for the exception with source file information var st = new StackTrace(e, true); // Get the top stack frame var frame = st.GetFrame(0); // Get the line number from the stack frame var line = frame.GetFileLineNumber(); Console.WriteLine("Stack trace:" + Environment.NewLine + SerializeJson(st, true)); Console.WriteLine("Stack frame: " + Environment.NewLine + SerializeJson(st, true)); Console.WriteLine("Line number: " + line); Console.WriteLine("Exception: " + Environment.NewLine + SerializeJson(e, true)); } Console.WriteLine(""); Console.WriteLine("Press ENTER to exit"); Console.ReadLine(); }
static void Main(string[] args) { try { #region Setup Console.Write("Filename: "); _Filename = Console.ReadLine(); if (String.IsNullOrEmpty(_Filename)) { return; } _Settings = new DatabaseSettings(_Filename); _Orm = new WatsonORM(_Settings); _Orm.InitializeDatabase(); DebugSettings debug = new DebugSettings(); debug.DatabaseQueries = true; debug.DatabaseResults = true; _Orm.Logger = Logger; _Orm.Debug = debug; _Orm.InitializeTable(typeof(Person)); _Orm.TruncateTable(typeof(Person)); Console.WriteLine("Using table: " + _Orm.GetTableName(typeof(Person))); #endregion #region Create-and-Store-Records DateTimeOffset localTime = new DateTimeOffset(Convert.ToDateTime("1/1/2021")); Person p1 = new Person("Abraham", "Lincoln", Convert.ToDateTime("1/1/1980"), null, localTime, null, 42, null, "initial notes p1", PersonType.Human, null, false); Person p2 = new Person("Ronald", "Reagan", Convert.ToDateTime("2/2/1981"), Convert.ToDateTime("3/3/1982"), localTime, localTime, 43, 43, "initial notes p2", PersonType.Cat, PersonType.Cat, true); Person p3 = new Person("George", "Bush", Convert.ToDateTime("3/3/1982"), null, localTime, null, 44, null, "initial notes p3", PersonType.Dog, PersonType.Dog, false); Person p4 = new Person("Barack", "Obama", Convert.ToDateTime("4/4/1983"), Convert.ToDateTime("5/5/1983"), localTime, localTime, 45, null, "initial notes p4", PersonType.Human, null, true); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p1"); p1 = _Orm.Insert <Person>(p1); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p2"); p2 = _Orm.Insert <Person>(p2); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p3"); p3 = _Orm.Insert <Person>(p3); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Creating p4"); p4 = _Orm.Insert <Person>(p4); #endregion #region Select for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting many by column name"); DbExpression eSelect1 = new DbExpression("id", DbOperators.GreaterThan, 0); List <Person> selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect1); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting many by property name"); DbExpression eSelect2 = new DbExpression( _Orm.GetColumnName <Person>(nameof(Person.FirstName)), DbOperators.Equals, "Abraham"); List <Person> selectedList2 = _Orm.SelectMany <Person>(null, null, eSelect2); Console.WriteLine("| Retrieved: " + selectedList2.Count + " records"); foreach (Person curr in selectedList2) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by ID"); Person pSelected = _Orm.SelectByPrimaryKey <Person>(3); Console.WriteLine("| Selected: " + pSelected.ToString()); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting first by column name"); DbExpression eSelect3 = new DbExpression("id", DbOperators.Equals, 4); pSelected = _Orm.SelectFirst <Person>(eSelect3); Console.WriteLine("| Selected: " + pSelected.ToString()); #endregion #region Update-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p1"); p1.Notes = "updated notes p1"; p1.NullableType = null; p1 = _Orm.Update <Person>(p1); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p2"); p2.Notes = "updated notes p2"; p2.NullableType = null; p2 = _Orm.Update <Person>(p2); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p3"); p3.Notes = "updated notes p3"; p3.NullableType = null; p3 = _Orm.Update <Person>(p3); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating p4"); p4.Notes = "updated notes p4"; p4.NullableType = null; p4 = _Orm.Update <Person>(p4); #endregion #region Update-Many-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Updating many records"); Dictionary <string, object> updateVals = new Dictionary <string, object>(); updateVals.Add(_Orm.GetColumnName <Person>("Notes"), "Updated during update many!"); _Orm.UpdateMany <Person>(eSelect1, updateVals); #endregion #region Select for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting many, test 1"); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect1); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by ID"); pSelected = _Orm.SelectByPrimaryKey <Person>(3); Console.WriteLine("| Selected: " + pSelected.ToString()); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting first"); pSelected = _Orm.SelectFirst <Person>(eSelect2); Console.WriteLine("| Selected: " + pSelected.ToString()); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting between, test 1"); DbExpression eSelect4 = DbExpression.Between("id", new List <object> { 2, 4 }); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect4); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by persontype"); DbExpression eSelect5 = new DbExpression("persontype", DbOperators.Equals, PersonType.Dog); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect5); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting handsome people"); DbExpression eSelect6 = new DbExpression("ishandsome", DbOperators.Equals, true); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect6); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Selecting by reverse ID order"); DbExpression eSelect7 = new DbExpression("id", DbOperators.GreaterThan, 0); DbResultOrder[] resultOrder = new DbResultOrder[1]; resultOrder[0] = new DbResultOrder("id", DbOrderDirection.Descending); selectedList1 = _Orm.SelectMany <Person>(null, null, eSelect7, resultOrder); Console.WriteLine("| Retrieved: " + selectedList1.Count + " records"); foreach (Person curr in selectedList1) { Console.WriteLine(" | " + curr.ToString()); } #endregion #region Exception for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Catching exception and displaying query"); try { _Orm.Query("SELECT * FROM person ((("); } catch (Exception e) { Console.WriteLine("Exception: " + e.Message); Console.WriteLine("Query : " + e.Data["Query"]); } #endregion #region Delete-Records for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Deleting p1"); _Orm.Delete <Person>(p1); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Deleting p2"); _Orm.DeleteByPrimaryKey <Person>(2); for (int i = 0; i < 8; i++) { Console.WriteLine(""); } Console.WriteLine("| Deleting p3 and p4"); DbExpression eDelete = new DbExpression("id", DbOperators.GreaterThan, 2); _Orm.DeleteMany <Person>(eDelete); #endregion } catch (Exception e) { // Get stack trace for the exception with source file information var st = new StackTrace(e, true); // Get the top stack frame var frame = st.GetFrame(0); // Get the line number from the stack frame var line = frame.GetFileLineNumber(); Console.WriteLine("Stack trace:" + Environment.NewLine + SerializeJson(st, true)); Console.WriteLine("Stack frame: " + Environment.NewLine + SerializeJson(st, true)); Console.WriteLine("Line number: " + line); Console.WriteLine("Exception: " + Environment.NewLine + SerializeJson(e, true)); } Console.WriteLine(""); Console.WriteLine("Press ENTER to exit"); Console.ReadLine(); }