ServiceStack.OrmLite Represents the key aspects of a sql operation The command (sql or a stored-procedure name) to execute The parameters associated with the command The active transaction for the command The effective timeout for the command The type of command that the command-text represents Should data be buffered before returning? Should the plan for this query be cached? Additional state flags against this command Can async queries be pipelined? Initialize the command definition Additional state flags that control command behaviour No additional flags Should data be buffered before returning? Can async queries be pipelined? Should the plan cache be bypassed? Implements custom property mapping by user provided criteria (usually presence of some custom attribute with column to member mapping) Creates custom property mapping Target entity type Property selector based on target type and DataReader column name Always returns default constructor DataReader column names DataReader column types Default constructor Always returns null Not implemented as far as default constructor used for all cases Returns property based on selector strategy DataReader column name Poperty member map This class represents a SQL string, it can be used if you need to denote your parameter is a Char vs VarChar vs nVarChar vs nChar Default value for IsAnsi. A value to set the default value of strings going through Dapper. Default is 4000, any value larger than this field will not have the default value applied. Create a new DbString Ansi vs Unicode Fixed length Length of the string -1 for max The value of the string Add the parameter to the command... internal use only Represents default type mapping strategy used by Dapper Creates default type map Entity type Finds best constructor DataReader column names DataReader column types Matching constructor or default one Returns the constructor, if any, that has the ExplicitConstructorAttribute on it. Gets mapping for constructor parameter Constructor to resolve DataReader column name Mapping implementation Gets member mapping for column DataReader column name Mapping implementation Should column names like User_Id be allowed to match properties/fields like UserId ? The settable properties for this typemap A bag of parameters that can be passed to the Dapper Query and Execute methods construct a dynamic parameter bag construct a dynamic parameter bag can be an anonymous type or a DynamicParameters bag Append a whole object full of params to the dynamic EG: AddDynamicParams(new {A = 1, B = 2}) // will add property A and B to the dynamic Add a parameter to this dynamic parameter list Add a parameter to this dynamic parameter list If true, the command-text is inspected and only values that are clearly used are included on the connection Add all the parameters needed to the command just before it executes The raw command prior to execution Information about the query All the names of the param in the bag, use Get to yank them out Get the value of a parameter The value, note DBNull.Value is not returned, instead the value is returned as null Allows you to automatically populate a target property/field from output parameters. It actually creates an InputOutput parameter, so you can still pass data in. The object whose property/field you wish to populate. A MemberExpression targeting a property/field of the target (or descendant thereof.) The size to set on the parameter. Defaults to 0, or DbString.DefaultLength in case of strings. The DynamicParameters instance Tell Dapper to use an explicit constructor, passing nulls or 0s for all parameters Handles variances in features per DBMS Gets the feature set based on the passed connection True if the db supports array columns e.g. Postgresql Represents simple member map for one of target parameter or property or field to source DataReader column Creates instance for simple property mapping DataReader column name Target property Creates instance for simple field mapping DataReader column name Target property Creates instance for simple constructor parameter mapping DataReader column name Target constructor parameter DataReader column name Target member type Target property Target field Target constructor parameter Used to pass a IEnumerable<SqlDataRecord> as a SqlDataRecordListTVPParameter Create a new instance of SqlDataRecordListTVPParameter Dapper, a light weight object mapper for ADO.NET Called if the query cache is purged via PurgeQueryCache Purge the query cache Return a count of all the cached queries by dapper Return a list of all the queries cached by dapper Deep diagnostics only: find any hash collisions in the cache Clear the registered type handlers Configure the specified type to be mapped to a given db-type Configure the specified type to be processed by a custom handler Configure the specified type to be processed by a custom handler Configure the specified type to be processed by a custom handler Get the DbType that maps to a given value OBSOLETE: For internal usage only. Lookup the DbType and handler for a given Type and member Obtains the data as a list; if it is *already* a list, the original object is returned without any duplication; otherwise, ToList() is invoked. Execute parameterized SQL Number of rows affected Execute parameterized SQL Number of rows affected Execute parameterized SQL that selects a single value The first cell selected Execute parameterized SQL that selects a single value The first cell selected Execute parameterized SQL that selects a single value The first cell selected Execute parameterized SQL that selects a single value The first cell selected Execute parameterized SQL and return an An that can be used to iterate over the results of the SQL query. This is typically used when the results of a query are not processed by Dapper, for example, used to fill a or . Execute parameterized SQL and return an An that can be used to iterate over the results of the SQL query. This is typically used when the results of a query are not processed by Dapper, for example, used to fill a or . Execute parameterized SQL and return an An that can be used to iterate over the results of the SQL query. This is typically used when the results of a query are not processed by Dapper, for example, used to fill a or . Return a sequence of dynamic objects with properties matching the columns Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Return a dynamic object with properties matching the columns Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Return a dynamic object with properties matching the columns Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Return a dynamic object with properties matching the columns Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Return a dynamic object with properties matching the columns Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Executes a query, returning the data typed as per T A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per T A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per T A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per T A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per T A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per the Type suggested A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per the Type suggested A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per the Type suggested A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per the Type suggested A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a single-row query, returning the data typed as per the Type suggested A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a query, returning the data typed as per T the dynamic param may seem a bit odd, but this works around a major usability issue in vs, if it is Object vs completion gets annoying. Eg type new [space] get new object A sequence of data of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a query, returning the data typed as per T the dynamic param may seem a bit odd, but this works around a major usability issue in vs, if it is Object vs completion gets annoying. Eg type new [space] get new object A single instance or null of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a query, returning the data typed as per T the dynamic param may seem a bit odd, but this works around a major usability issue in vs, if it is Object vs completion gets annoying. Eg type new [space] get new object A single or null instance of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a query, returning the data typed as per T the dynamic param may seem a bit odd, but this works around a major usability issue in vs, if it is Object vs completion gets annoying. Eg type new [space] get new object A single instance of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Executes a query, returning the data typed as per T the dynamic param may seem a bit odd, but this works around a major usability issue in vs, if it is Object vs completion gets annoying. Eg type new [space] get new object A single instance of the supplied type; if a basic type (int, string, etc) is queried then the data from the first column in assumed, otherwise an instance is created per row, and a direct column-name===member-name mapping is assumed (case insensitive). Execute a command that returns multiple result sets, and access each in turn Execute a command that returns multiple result sets, and access each in turn Maps a query to objects The first type in the record set The second type in the record set The return type The Field we should split and read the second object from (default: id) Number of seconds before command execution timeout Is it a stored proc or a batch? Maps a query to objects The Field we should split and read the second object from (default: id) Number of seconds before command execution timeout Perform a multi mapping query with 4 input parameters Perform a multi mapping query with 5 input parameters Perform a multi mapping query with 6 input parameters Perform a multi mapping query with 7 input parameters Perform a multi mapping query with arbitrary input parameters The return type array of types in the record set The Field we should split and read the second object from (default: id) Number of seconds before command execution timeout Is it a stored proc or a batch? Internal use only Internal use only Internal use only Internal use only OBSOLETE: For internal usage only. Sanitizes the paramter value with proper type casting. Replace all literal tokens with their text form Convert numeric values to their string form for SQL literal purposes Internal use only Gets type-map for the given type Type map instance, default is to create new instance of DefaultTypeMap Gets type-map for the given type Type map implementation, DefaultTypeMap instance if no override present Set custom mapping for type deserializers Entity type to override Mapping rules impementation, null to remove custom map Internal use only Throws a data exception, only used internally How should connection strings be compared for equivalence? Defaults to StringComparer.Ordinal. Providing a custom implementation can be useful for allowing multi-tenancy databases with identical schema to share strategies. Note that usual equivalence rules apply: any equivalent connection strings MUST yield the same hash-code. Key used to indicate the type name associated with a DataTable Used to pass a DataTable as a TableValuedParameter Associate a DataTable with a type name Fetch the type name associated with a DataTable Used to pass a IEnumerable<SqlDataRecord> as a TableValuedParameter Dummy type for excluding from multi-map The grid reader provides interfaces for reading multiple result sets from a Dapper query Read the next grid of results, returned as a dynamic object Note: each row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Read an individual row of the next grid of results, returned as a dynamic object Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Read an individual row of the next grid of results, returned as a dynamic object Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Read an individual row of the next grid of results, returned as a dynamic object Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Read an individual row of the next grid of results, returned as a dynamic object Note: the row can be accessed via "dynamic", or by casting to an IDictionary<string,object> Read the next grid of results Read an individual row of the next grid of results Read an individual row of the next grid of results Read an individual row of the next grid of results Read an individual row of the next grid of results Read the next grid of results Read an individual row of the next grid of results Read an individual row of the next grid of results Read an individual row of the next grid of results Read an individual row of the next grid of results Read multiple objects from a single record set on the grid Read multiple objects from a single record set on the grid Read multiple objects from a single record set on the grid Read multiple objects from a single record set on the grid Read multiple objects from a single record set on the grid Read multiple objects from a single record set on the grid Read multiple objects from a single record set on the grid Has the underlying reader been consumed? The command associated with the reader Dispose the grid, closing and disposing both the underlying reader and command. Implement this interface to pass an arbitrary db specific parameter to Dapper Add the parameter needed to the command before it executes The raw command prior to execution Parameter name Parses a data reader to a sequence of data of the supplied type. Used for deserializing a reader without a connection, etc. Parses a data reader to a sequence of data of the supplied type (as object). Used for deserializing a reader without a connection, etc. Parses a data reader to a sequence of dynamic. Used for deserializing a reader without a connection, etc. Gets the row parser for a specific row on a data reader. This allows for type switching every row based on, for example, a TypeId column. You could return a collection of the base type but have each more specific. The data reader to get the parser for the current row from The type to get the parser for The start column index of the object (default 0) The length of columns to read (default -1 = all fields following startIndex) Return null if we can't find the first column? (default false) A parser for this specific object from this row. Gets the row parser for a specific row on a data reader. This allows for type switching every row based on, for example, a TypeId column. You could return a collection of the base type but have each more specific. The data reader to get the parser for the current row from The type to get the parser for The start column index of the object (default 0) The length of columns to read (default -1 = all fields following startIndex) Return null if we can't find the first column? (default false) A parser for this specific object from this row. var result = new List<BaseType>(); using (var reader = connection.ExecuteReader(@" select 'abc' as Name, 1 as Type, 3.0 as Value union all select 'def' as Name, 2 as Type, 4.0 as Value")) { if (reader.Read()) { var toFoo = reader.GetRowParser<BaseType>(typeof(Foo)); var toBar = reader.GetRowParser<BaseType>(typeof(Bar)); var col = reader.GetOrdinal("Type"); do { switch (reader.GetInt32(col)) { case 1: result.Add(toFoo(reader)); break; case 2: result.Add(toBar(reader)); break; } } while (reader.Read()); } } abstract class BaseType { public abstract int Type { get; } } class Foo : BaseType { public string Name { get; set; } public override int Type => 1; } class Bar : BaseType { public float Value { get; set; } public override int Type => 2; } Identity of a cached query in Dapper, used for extensibility Create an identity for use with DynamicParameters, internal use only The sql The command type Compare 2 Identity objects Implement this interface to pass an arbitrary db specific set of parameters to Dapper Add all the parameters needed to the command just before it executes The raw command prior to execution Information about the query Implements this interface to provide custom member mapping Source DataReader column name Target member type Target property Target field Target constructor parameter Extends IDynamicParameters with facilities for executing callbacks after commands have completed Invoked when the command has executed Extends IDynamicParameters providing by-name lookup of parameter values Get the value of the specified parameter (return null if not found) Implement this interface to perform custom type-based parameter handling and value parsing Assign the value of a parameter before a command executes The parameter to configure Parameter value Parse a database value back to a typed value The value from the database The type to parse to The typed value Implement this interface to change default mapping of reader columns to type members Finds best constructor DataReader column names DataReader column types Matching constructor or default one Returns a constructor which should *always* be used. Parameters will be default values, nulls for reference types and zero'd for value types. Use this class to force object creation away from parameterless constructors you don't control. Gets mapping for constructor parameter Constructor to resolve DataReader column name Mapping implementation Gets member mapping for column DataReader column name Mapping implementation This is a micro-cache; suitable when the number of terms is controllable (a few hundred, for example), and strictly append-only; you cannot change existing values. All key matches are on **REFERENCE** equality. The type is fully thread-safe. Represents a placeholder for a value that should be replaced as a literal value in the resulting sql The text in the original command that should be replaced The name of the member referred to by the token Permits specifying certain SqlMapper values globally. Resets all Settings to their default values Specifies the default Command Timeout for all Queries Indicates whether nulls in data are silently ignored (default) vs actively applied and assigned to members Should list expansions be padded with null-valued parameters, to prevent query-plan saturation? For example, an 'in @foo' expansion with 7, 8 or 9 values will be sent as a list of 10 values, with 3, 2 or 1 of them null. The padding size is relative to the size of the list; "next 10" under 150, "next 50" under 500, "next 100" under 1500, etc. Caution: this should be treated with care if your DB provider (or the specific configuration) allows for null equality (aka "ansi nulls off"), as this may change the intent of your query; as such, this is disabled by default and must be enabled. Base-class for simple type-handlers Assign the value of a parameter before a command executes The parameter to configure Parameter value Parse a database value back to a typed value The value from the database The typed value Base-class for simple type-handlers that are based around strings Parse a string into the expected type (the string will never be null) Format an instace into a string (the instance will never be null) Assign the value of a parameter before a command executes The parameter to configure Parameter value Parse a database value back to a typed value The value from the database The typed value Not intended for direct usage Not intended for direct usage Not intended for direct usage A type handler for data-types that are supported by the underlying provider, but which need a well-known UdtTypeName to be specified Creates a new instance of UdtTypeHandler with the specified UdtTypeName Used to pass a DataTable as a TableValuedParameter Create a new instance of TableValuedParameter Create a new instance of TableValuedParameter Describes a reader that controls the lifetime of both a command and a reader, exposing the downstream command/reader as properties. Obtain the underlying reader Obtain the underlying command RDBMS Dialect this Converter is for. Injected at registration. SQL Column Definiton used in CREATE Table. Used in DB Params. Defaults to DbType.String Quoted Value in SQL Statement Customize how DB Param is initialized. Useful for supporting RDBMS-specific Types. Parameterized value in parameterized queries Value from DB to Populate on POCO Data Model with Retrieve Value from ADO.NET IDataReader. Defaults to reader.GetValue() For Types that are natively supported by RDBMS's and shouldn't be quoted Returns results from using an SqlFormat query. E.g: db.SelectFmt<Person>("Age > {0}", 40) db.SelectFmt<Person>("SELECT * FROM Person WHERE Age > {0}", 40) Returns a partial subset of results from the specified tableType using a SqlFormat query. E.g: db.SelectFmt<EntityWithId>(typeof(Person), "Age > {0}", 40) Returns a lazyily loaded stream of results using an SqlFilter query. E.g: db.SelectLazyFmt<Person>("Age > {0}", 40) Returns the first result using a SqlFormat query. E.g: db.SingleFmt<Person>("Age = {0}", 42) Returns a single scalar value using an SqlFormat query. E.g: db.ScalarFmt<int>("SELECT COUNT(*) FROM Person WHERE Age > {0}", 40) Returns the first column in a List using a SqlFormat query. E.g: db.ColumnFmt<string>("SELECT LastName FROM Person WHERE Age = {0}", 27) Returns the distinct first column values in a HashSet using an SqlFormat query. E.g: db.ColumnDistinctFmt<int>("SELECT Age FROM Person WHERE Age < {0}", 50) Returns an Dictionary<K, List<V>> grouping made from the first two columns using an SqlFormat query. E.g: db.LookupFmt<int, string>("SELECT Age, LastName FROM Person WHERE Age < {0}", 50) Returns a Dictionary from the first 2 columns: Column 1 (Keys), Column 2 (Values) using an SqlFormat query. E.g: db.DictionaryFmt<int, string>("SELECT Id, LastName FROM Person WHERE Age < {0}", 50) Returns true if the Query returns any records, using an SqlFormat query. E.g: db.ExistsFmt<Person>("Age = {0}", 42) db.ExistsFmt<Person>("SELECT * FROM Person WHERE Age = {0}", 50) Returns true if the Query returns any records that match the SqlExpression lambda, E.g: db.Exists<Person>(q => q.Where(x => x.Age < 50)) Create a new SqlExpression builder allowing typed LINQ-like queries. Returns results from using an SqlExpression lambda. E.g: db.Select<Person>(q => q.Where(x => x.Age > 40)) Project results from a number of joined tables into a different model Project results from a number of joined tables into a different model Returns a single result from using an SqlExpression lambda. E.g: db.Single<Person>(q => q.Where(x => x.Age == 42)) Returns the count of rows that match the SqlExpression lambda, E.g: db.Count<Person>(q => q.Where(x => x.Age < 50)) Returns results with references from using an SqlExpression lambda. E.g: db.LoadSelect<Person>(q => q.Where(x => x.Age > 40)) Returns results with references from using an SqlExpression lambda. E.g: db.LoadSelect<Person>(q => q.Where(x => x.Age > 40), include: x => new { x.PrimaryAddress }) Delete rows using a SqlFormat filter. E.g: db.Delete<Person>("Age > {0}", 42) number of rows deleted Delete rows from the runtime table type using a SqlFormat filter. E.g: db.DeleteFmt(typeof(Person), "Age = {0}", 27) number of rows deleted Insert only fields in POCO specified by the SqlExpression lambda. E.g: db.InsertOnly(new Person { FirstName = "Amy", Age = 27 }, q => q.Insert(p => new { p.FirstName, p.Age })) Use an SqlExpression to select which fields to update and construct the where expression, E.g: db.UpdateOnly(new Person { FirstName = "JJ" }, ev => ev.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi")); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("FirstName" = 'Jimi') What's not in the update expression doesn't get updated. No where expression updates all rows. E.g: db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, ev => ev.Update(p => p.FirstName)); UPDATE "Person" SET "FirstName" = 'JJ' Flexible Update method to succinctly execute a free-text update statement using optional params. E.g: db.Update<Person>(set:"FirstName = {0}".Params("JJ"), where:"LastName = {0}".Params("Hendrix")); UPDATE "Person" SET FirstName = 'JJ' WHERE LastName = 'Hendrix' Flexible Update method to succinctly execute a free-text update statement using optional params. E.g. db.Update(table:"Person", set: "FirstName = {0}".Params("JJ"), where: "LastName = {0}".Params("Hendrix")); UPDATE "Person" SET FirstName = 'JJ' WHERE LastName = 'Hendrix' Flexible Delete method to succinctly execute a delete statement using free-text where expression. E.g. db.Delete<Person>(where:"Age = {0}".Params(27)); DELETE FROM "Person" WHERE Age = 27 Flexible Delete method to succinctly execute a delete statement using free-text where expression. E.g. db.Delete(table:"Person", where: "Age = {0}".Params(27)); DELETE FROM "Person" WHERE Age = 27 Delete the rows that matches the where expression, e.g: db.Delete<Person>(ev => ev.Where(p => p.Age == 27)); DELETE FROM "Person" WHERE ("Age" = 27) Using an SqlExpression to only Insert the fields specified, e.g: db.InsertOnly(new Person { FirstName = "Amy" }, q => q.Insert(p => new { p.FirstName })); INSERT INTO "Person" ("FirstName") VALUES ('Amy'); Tell ServiceStack to use ThreadStatic Items Collection for Context Scoped items. Warning: ThreadStatic Items aren't pinned to the same request in async services which callback on different threads. Gets a list of items for this context. Clear select expression. All properties will be selected. set the specified selectExpression. raw Select expression: "Select SomeField1, SomeField2 from SomeTable" Set the specified selectExpression using matching fields. Matching Fields: "SomeField1, SomeField2" Offset of the first row to return. The offset of the initial row is 0 Number of rows returned by a SELECT statement Set the specified offset and rows for SQL Limit clause. Offset of the first row to return. The offset of the initial row is 0 Number of rows returned by a SELECT statement Set the specified offset and rows for SQL Limit clause where they exist. Offset of the first row to return. The offset of the initial row is 0 Number of rows returned by a SELECT statement Set the specified rows for Sql Limit clause. Number of rows returned by a SELECT statement Clear Sql Limit clause Clear Offset and Limit clauses. Alias for Limit() Fields to be updated. List<string> containing Names of properties to be updated Fields to be updated. IEnumerable<string> containing Names of properties to be updated Fields to be updated. x=> x.SomeProperty1 or x=> new { x.SomeProperty1, x.SomeProperty2 } Clear UpdateFields list ( all fields will be updated) Fields to be inserted. x=> x.SomeProperty1 or x=> new{ x.SomeProperty1, x.SomeProperty2} objectWithProperties fields to be inserted. IList<string> containing Names of properties to be inserted Clear InsertFields list ( all fields will be inserted) Enables the efficient, dynamic composition of query predicates. Creates a predicate that evaluates to true. Creates a predicate that evaluates to false. Creates a predicate expression from the specified lambda expression. Combines the first predicate with the second using the logical "and". Combines the first predicate with the second using the logical "or". Negates the predicate. Combines the first expression with the second using the specified merge function. Creates a new SqlExpression builder allowing typed LINQ-like queries. Alias for SqlExpression. Creates a new SqlExpression builder for the specified type using a user-defined FROM sql expression. Open a Transaction in OrmLite Open a Transaction in OrmLite Create a managed OrmLite IDbCommand Returns results from using a LINQ Expression. E.g: db.Select<Person>(x => x.Age > 40) Returns results from using an SqlExpression lambda. E.g: db.Select(db.From<Person>().Where(x => x.Age > 40)) Returns results from using an SqlExpression lambda. E.g: db.Select(db.From<Person>().Where(x => x.Age > 40)) Returns a single result from using a LINQ Expression. E.g: db.Single<Person>(x => x.Age == 42) Returns results from using an SqlExpression lambda. E.g: db.Select<Person>(x => x.Age > 40) Returns results from using an SqlExpression lambda. E.g: db.Single(db.From<Person>().Where(x => x.Age > 40)) Returns a scalar result from using an SqlExpression lambda. E.g: db.Scalar<Person, int>(x => Sql.Max(x.Age)) Returns a scalar result from using an SqlExpression lambda. E.g: db.Scalar<Person, int>(x => Sql.Max(x.Age), , x => x.Age < 50) Returns the count of rows that match the LINQ expression, E.g: db.Count<Person>(x => x.Age < 50) Returns the count of rows that match the supplied SqlExpression, E.g: db.Count(db.From<Person>().Where(x => x.Age < 50)) Return the number of rows returned by the supplied expression Return the number of rows returned by the supplied sql Return the number of rows returned by the supplied sql and db params Returns results with references from using a LINQ Expression. E.g: db.LoadSelect<Person>(x => x.Age > 40) Returns results with references from using a LINQ Expression. E.g: db.LoadSelect<Person>(x => x.Age > 40, include: x => new { x.PrimaryAddress }) Returns results with references from using an SqlExpression lambda. E.g: db.LoadSelect(db.From<Person>().Where(x => x.Age > 40)) Returns results with references from using an SqlExpression lambda. E.g: db.LoadSelect(db.From<Person>().Where(x => x.Age > 40), include:q.OnlyFields) Returns results with references from using an SqlExpression lambda. E.g: db.LoadSelect(db.From<Person>().Where(x => x.Age > 40), include: x => new { x.PrimaryAddress }) Project results with references from a number of joined tables into a different model Project results with references from a number of joined tables into a different model Project results with references from a number of joined tables into a different model Use an SqlExpression to select which fields to update and construct the where expression, E.g: var q = db.From>Person<()); db.UpdateOnly(new Person { FirstName = "JJ" }, q.Update(p => p.FirstName).Where(x => x.FirstName == "Jimi")); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("FirstName" = 'Jimi') What's not in the update expression doesn't get updated. No where expression updates all rows. E.g: db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, ev.Update(p => p.FirstName)); UPDATE "Person" SET "FirstName" = 'JJ' Update only fields in the specified expression that matches the where condition (if any), E.g: db.UpdateOnly(() => new Person { FirstName = "JJ" }, where: p => p.LastName == "Hendrix"); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix') db.UpdateOnly(() => new Person { FirstName = "JJ" }); UPDATE "Person" SET "FirstName" = 'JJ' Update only fields in the specified expression that matches the where condition (if any), E.g: db.UpdateOnly(() => new Person { FirstName = "JJ" }, db.From>Person<().Where(p => p.LastName == "Hendrix")); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix') Update record, updating only fields specified in updateOnly that matches the where condition (if any), E.g: db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName, p => p.LastName == "Hendrix"); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix') db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.FirstName); UPDATE "Person" SET "FirstName" = 'JJ' db.UpdateOnly(new Person { FirstName = "JJ", Age = 27 }, p => new { p.FirstName, p.Age ); UPDATE "Person" SET "FirstName" = 'JJ', "Age" = 27 Update record, updating only fields specified in updateOnly that matches the where condition (if any), E.g: db.UpdateOnly(new Person { FirstName = "JJ" }, new[]{ "FirstName" }, p => p.LastName == "Hendrix"); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix') Update record, updating only fields specified in updateOnly that matches the where condition (if any), E.g: Numeric fields generates an increment sql which is usefull to increment counters, etc... avoiding concurrency conflicts db.UpdateAdd(() => new Person { Age = 5 }, where: p => p.LastName == "Hendrix"); UPDATE "Person" SET "Age" = "Age" + 5 WHERE ("LastName" = 'Hendrix') db.UpdateAdd(() => new Person { Age = 5 }); UPDATE "Person" SET "Age" = "Age" + 5 Update record, updating only fields specified in updateOnly that matches the where condition (if any), E.g: Numeric fields generates an increment sql which is usefull to increment counters, etc... avoiding concurrency conflicts db.UpdateAdd(() => new Person { Age = 5 }, db.From<Person>().Where(p => p.LastName == "Hendrix")); UPDATE "Person" SET "Age" = "Age" + 5 WHERE ("LastName" = 'Hendrix') Updates all non-default values set on item matching the where condition (if any). E.g db.UpdateNonDefaults(new Person { FirstName = "JJ" }, p => p.FirstName == "Jimi"); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("FirstName" = 'Jimi') Updates all values set on item matching the where condition (if any). E.g db.Update(new Person { Id = 1, FirstName = "JJ" }, p => p.LastName == "Hendrix"); UPDATE "Person" SET "Id" = 1,"FirstName" = 'JJ',"LastName" = NULL,"Age" = 0 WHERE ("LastName" = 'Hendrix') Updates all matching fields populated on anonymousType that matches where condition (if any). E.g: db.Update<Person>(new { FirstName = "JJ" }, p => p.LastName == "Hendrix"); UPDATE "Person" SET "FirstName" = 'JJ' WHERE ("LastName" = 'Hendrix') Using an SqlExpression to only Insert the fields specified, e.g: db.InsertOnly(new Person { FirstName = "Amy" }, p => p.FirstName)); INSERT INTO "Person" ("FirstName") VALUES ('Amy'); db.InsertOnly(new Person { Id =1 , FirstName="Amy" }, p => new { p.Id, p.FirstName })); INSERT INTO "Person" ("Id", "FirstName") VALUES (1, 'Amy'); Using an SqlExpression to only Insert the fields specified, e.g: db.InsertOnly(new Person { FirstName = "Amy" }, new[]{ "FirstName" })); INSERT INTO "Person" ("FirstName") VALUES ('Amy'); Using an SqlExpression to only Insert the fields specified, e.g: db.InsertOnly(() => new Person { FirstName = "Amy" })); INSERT INTO "Person" ("FirstName") VALUES (@FirstName); Delete the rows that matches the where expression, e.g: db.Delete<Person>(p => p.Age == 27); DELETE FROM "Person" WHERE ("Age" = 27) Delete the rows that matches the where expression, e.g: var q = db.From<Person>()); db.Delete<Person>(q.Where(p => p.Age == 27)); DELETE FROM "Person" WHERE ("Age" = 27) Returns results from the active connection. Returns results from using sql. E.g: db.Select<Person>("Age > 40") db.Select<Person>("SELECT * FROM Person WHERE Age > 40") Returns results from using sql. E.g: db.Select<Person>("SELECT * FROM Person WHERE Age > @age", new[] { db.CreateParam("age", 40) }) Returns results from using a parameterized query. E.g: db.Select<Person>("Age > @age", new { age = 40}) db.Select<Person>("SELECT * FROM Person WHERE Age > @age", new { age = 40}) Returns results from using a parameterized query. E.g: db.Select<Person>("Age > @age", new Dictionary<string, object> { { "age", 40 } }) db.Select<Person>("SELECT * FROM Person WHERE Age > @age", new Dictionary<string, object> { { "age", 40 } }) Returns a partial subset of results from the specified tableType. E.g: db.Select<EntityWithId>(typeof(Person)) Returns a partial subset of results from the specified tableType. E.g: db.Select<EntityWithId>(typeof(Person)) Returns results from using a single name, value filter. E.g: db.Where<Person>("Age", 27) Returns results from using an anonymous type filter. E.g: db.Where<Person>(new { Age = 27 }) Returns results using the supplied primary key ids. E.g: db.SelectByIds<Person>(new[] { 1, 2, 3 }) Query results using the non-default values in the supplied partially populated POCO example. E.g: db.SelectNonDefaults(new Person { Id = 1 }) Query results using the non-default values in the supplied partially populated POCO example. E.g: db.SelectNonDefaults("Age > @Age", new Person { Age = 42 }) Returns a lazyily loaded stream of results. E.g: db.SelectLazy<Person>() Returns a lazyily loaded stream of results using a parameterized query. E.g: db.SelectLazy<Person>("Age > @age", new { age = 40 }) Returns a lazyily loaded stream of results using a parameterized query. E.g: db.SelectLazy(db.From<Person>().Where(x => x == 40)) Returns a stream of results that are lazily loaded using a parameterized query. E.g: db.WhereLazy<Person>(new { Age = 27 }) Returns the first result using a parameterized query. E.g: db.Single<Person>(new { Age = 42 }) Returns results from using a single name, value filter. E.g: db.Single<Person>("Age = @age", new[] { db.CreateParam("age",40) }) Returns results from using a single name, value filter. E.g: db.Single<Person>("Age = @age", new { age = 42 }) Returns the first result using a primary key id. E.g: db.SingleById<Person>(1) Returns the first result using a name, value filter. E.g: db.SingleWhere<Person>("Age", 42) Returns a single scalar value using an SqlExpression. E.g: db.Column<int>(db.From<Persion>().Select(x => Sql.Count("*")).Where(q => q.Age > 40)) Returns a single scalar value using a parameterized query. E.g: db.Scalar<int>("SELECT COUNT(*) FROM Person WHERE Age > @age", new[] { db.CreateParam("age",40) }) Returns a single scalar value using a parameterized query. E.g: db.Scalar<int>("SELECT COUNT(*) FROM Person WHERE Age > @age", new { age = 40 }) Returns the distinct first column values in a HashSet using an SqlExpression. E.g: db.Column<int>(db.From<Persion>().Select(x => x.LastName).Where(q => q.Age == 27)) Returns the first column in a List using a SqlFormat query. E.g: db.Column<string>("SELECT LastName FROM Person WHERE Age = @age", new[] { db.CreateParam("age",27) }) Returns the distinct first column values in a HashSet using an SqlExpression. E.g: db.ColumnLazy<int>(db.From<Persion>().Select(x => x.LastName).Where(q => q.Age == 27)) Returns the first column in a List using a SqlFormat query. E.g: db.ColumnLazy<string>("SELECT LastName FROM Person WHERE Age = @age", new[] { db.CreateParam("age",27) }) Returns the first column in a List using a SqlFormat query. E.g: db.ColumnLazy<string>("SELECT LastName FROM Person WHERE Age = @age", new { age = 27 }) Returns the first column in a List using a SqlFormat query. E.g: db.Column<string>("SELECT LastName FROM Person WHERE Age = @age", new { age = 27 }) Returns the distinct first column values in a HashSet using an SqlFormat query. E.g: db.ColumnDistinct<int>("SELECT Age FROM Person WHERE Age < @age", new { age = 50 }) Returns the distinct first column values in a HashSet using an SqlFormat query. E.g: db.ColumnDistinct<int>("SELECT Age FROM Person WHERE Age < @age", new[] { db.CreateParam("age",50) }) Returns an Dictionary<K, List<V>> grouping made from the first two columns using an parameterized query. E.g: db.Lookup<int, string>("SELECT Age, LastName FROM Person WHERE Age < @age", new[] { db.CreateParam("age",50) }) Returns an Dictionary<K, List<V>> grouping made from the first two columns using an parameterized query. E.g: db.Lookup<int, string>("SELECT Age, LastName FROM Person WHERE Age < @age", new { age = 50 }) Returns a Dictionary from the first 2 columns: Column 1 (Keys), Column 2 (Values) using sql. E.g: db.Dictionary<int, string>("SELECT Id, LastName FROM Person WHERE Age < @age", new { age = 50 }) Returns true if the Query returns any records that match the LINQ expression, E.g: db.Exists<Person>(x => x.Age < 50) Returns true if the Query returns any records that match the supplied SqlExpression, E.g: db.Exists(db.From<Person>().Where(x => x.Age < 50)) Returns true if the Query returns any records, using an SqlFormat query. E.g: db.Exists<Person>(new { Age = 42 }) Returns true if the Query returns any records, using a parameterized query. E.g: db.Exists<Person>("Age = @age", new { age = 42 }) db.Exists<Person>("SELECT * FROM Person WHERE Age = @age", new { age = 42 }) Returns results from an arbitrary SqlExpression. E.g: db.SqlList<Person>(db.From<Person>().Select("*").Where(q => q.Age < 50)) Returns results from an arbitrary parameterized raw sql query. E.g: db.SqlList<Person>("EXEC GetRockstarsAged @age", new[] { db.CreateParam("age",50) }) Returns results from an arbitrary parameterized raw sql query. E.g: db.SqlList<Person>("EXEC GetRockstarsAged @age", new { age = 50 }) Returns results from an arbitrary parameterized raw sql query. E.g: db.SqlList<Person>("EXEC GetRockstarsAged @age", new Dictionary<string, object> { { "age", 42 } }) Returns results from an arbitrary parameterized raw sql query with a dbCmd filter. E.g: db.SqlList<Person>("EXEC GetRockstarsAged @age", dbCmd => ...) Prepare Stored Procedure with Input parameters, optionally populated with Input Params. E.g: var cmd = db.SqlProc("GetRockstarsAged", new { age = 42 }) Returns the first column in a List using a parameterized query. E.g: db.SqlColumn<string>("SELECT LastName FROM Person WHERE Age < @age", new[] { db.CreateParam("age",50) }) Returns the first column in a List using a parameterized query. E.g: db.SqlColumn<string>("SELECT LastName FROM Person WHERE Age < @age", new { age = 50 }) Returns the first column in a List using a parameterized query. E.g: db.SqlColumn<string>("SELECT LastName FROM Person WHERE Age < @age", new Dictionary<string, object> { { "age", 50 } }) Returns a single Scalar value using an SqlExpression. E.g: db.SqlScalar<int>(db.From<Person>().Select(Sql.Count("*")).Where(q => q.Age < 50)) Returns a single Scalar value using a parameterized query. E.g: db.SqlScalar<int>("SELECT COUNT(*) FROM Person WHERE Age < @age", new[]{ db.CreateParam("age",50) }) Returns a single Scalar value using a parameterized query. E.g: db.SqlScalar<int>("SELECT COUNT(*) FROM Person WHERE Age < @age", new { age = 50 }) Returns a single Scalar value using a parameterized query. E.g: db.SqlScalar<int>("SELECT COUNT(*) FROM Person WHERE Age < @age", new Dictionary<string, object> { { "age", 50 } }) Returns the last insert Id made from this connection. Executes a raw sql non-query using sql. E.g: var rowsAffected = db.ExecuteNonQuery("UPDATE Person SET LastName={0} WHERE Id={1}".SqlFormat("WaterHouse", 7)) number of rows affected Executes a raw sql non-query using a parameterized query. E.g: var rowsAffected = db.ExecuteNonQuery("UPDATE Person SET LastName=@name WHERE Id=@id", new { name = "WaterHouse", id = 7 }) number of rows affected Executes a raw sql non-query using a parameterized query. number of rows affected Returns results from a Stored Procedure, using a parameterized query. Returns results from a Stored Procedure using an SqlFormat query. E.g: Returns the scalar result as a long. Returns the first result with all its references loaded, using a primary key id. E.g: db.LoadSingleById<Person>(1, include = new[]{ "Address" }) Returns the first result with all its references loaded, using a primary key id. E.g: db.LoadSingleById<Person>(1, include = x => new{ x.Address }) Loads all the related references onto the instance. E.g: db.LoadReferences(customer) Checks whether a Table Exists. E.g: db.TableExists("Person") Checks whether a Table Exists. E.g: db.TableExists<Person>() Checks whether a Table Column Exists. E.g: db.ColumnExists("Age", "Person") Checks whether a Table Column Exists. E.g: db.ColumnExists<Person>(x => x.Age) Create DB Tables from the schemas of runtime types. E.g: db.CreateTables(typeof(Table1), typeof(Table2)) Create DB Table from the schema of the runtime type. Use overwrite to drop existing Table. E.g: db.CreateTable(true, typeof(Table)) Only Create new DB Tables from the schemas of runtime types if they don't already exist. E.g: db.CreateTableIfNotExists(typeof(Table1), typeof(Table2)) Drop existing DB Tables and re-create them from the schemas of runtime types. E.g: db.DropAndCreateTables(typeof(Table1), typeof(Table2)) Create a DB Table from the generic type. Use overwrite to drop the existing table or not. E.g: db.CreateTable<Person>(overwrite=false) //default db.CreateTable<Person>(overwrite=true) Only create a DB Table from the generic type if it doesn't already exist. E.g: db.CreateTableIfNotExists<Person>() Only create a DB Table from the runtime type if it doesn't already exist. E.g: db.CreateTableIfNotExists(typeof(Person)) Drop existing table if exists and re-create a DB Table from the generic type. E.g: db.DropAndCreateTable<Person>() Drop existing table if exists and re-create a DB Table from the runtime type. E.g: db.DropAndCreateTable(typeof(Person)) Drop any existing tables from their runtime types. E.g: db.DropTables(typeof(Table1),typeof(Table2)) Drop any existing tables from the runtime type. E.g: db.DropTable(typeof(Person)) Drop any existing tables from the generic type. E.g: db.DropTable<Person>() Get the last SQL statement that was executed. Execute any arbitrary raw SQL. number of rows affected Execute any arbitrary raw SQL with db params. number of rows affected Insert 1 POCO, use selectIdentity to retrieve the last insert AutoIncrement id (if any). E.g: var id = db.Insert(new Person { Id = 1, FirstName = "Jimi }, selectIdentity:true) Insert 1 or more POCOs in a transaction. E.g: db.Insert(new Person { Id = 1, FirstName = "Tupac", LastName = "Shakur", Age = 25 }, new Person { Id = 2, FirstName = "Biggie", LastName = "Smalls", Age = 24 }) Insert a collection of POCOs in a transaction. E.g: db.InsertAll(new[] { new Person { Id = 9, FirstName = "Biggie", LastName = "Smalls", Age = 24 } }) Updates 1 POCO. All fields are updated except for the PrimaryKey which is used as the identity selector. E.g: db.Update(new Person { Id = 1, FirstName = "Jimi", LastName = "Hendrix", Age = 27 }) Updates 1 or more POCOs in a transaction. E.g: db.Update(new Person { Id = 1, FirstName = "Tupac", LastName = "Shakur", Age = 25 }, new Person { Id = 2, FirstName = "Biggie", LastName = "Smalls", Age = 24 }) Updates 1 or more POCOs in a transaction. E.g: db.UpdateAll(new[] { new Person { Id = 1, FirstName = "Jimi", LastName = "Hendrix", Age = 27 } }) Delete rows using an anonymous type filter. E.g: db.Delete<Person>(new { FirstName = "Jimi", Age = 27 }) number of rows deleted Delete 1 row using all fields in the filter. E.g: db.Delete(new Person { Id = 1, FirstName = "Jimi", LastName = "Hendrix", Age = 27 }) number of rows deleted Delete 1 or more rows in a transaction using all fields in the filter. E.g: db.Delete(new Person { Id = 1, FirstName = "Jimi", LastName = "Hendrix", Age = 27 }) Delete 1 or more rows using only field with non-default values in the filter. E.g: db.DeleteNonDefaults(new Person { FirstName = "Jimi", Age = 27 }) number of rows deleted Delete 1 or more rows in a transaction using only field with non-default values in the filter. E.g: db.DeleteNonDefaults(new Person { FirstName = "Jimi", Age = 27 }, new Person { FirstName = "Janis", Age = 27 }) number of rows deleted Delete 1 row by the PrimaryKey. E.g: db.DeleteById<Person>(1) number of rows deleted Delete 1 row by the PrimaryKey where the rowVersion matches the optimistic concurrency field. Will throw RowModefiedExeption if the row does not exist or has a different row version. E.g: db.DeleteById<Person>(1) Delete all rows identified by the PrimaryKeys. E.g: db.DeleteById<Person>(new[] { 1, 2, 3 }) number of rows deleted Delete all rows in the generic table type. E.g: db.DeleteAll<Person>() number of rows deleted Delete all rows provided. E.g: db.DeleteAll<Person>(people) number of rows deleted Delete all rows in the runtime table type. E.g: db.DeleteAll(typeof(Person)) number of rows deleted Delete rows using a SqlFormat filter. E.g: db.Delete<Person>("Age > @age", new { age = 42 }) number of rows deleted Delete rows using a SqlFormat filter. E.g: db.Delete<Person>("Age > @age", new { age = 42 }) number of rows deleted Insert a new row or update existing row. Returns true if a new row was inserted. Optional references param decides whether to save all related references as well. E.g: db.Save(customer, references:true) true if a row was inserted; false if it was updated Insert new rows or update existing rows. Return number of rows added E.g: db.Save(new Person { Id = 10, FirstName = "Amy", LastName = "Winehouse", Age = 27 }) number of rows added Insert new rows or update existing rows. Return number of rows added E.g: db.SaveAll(new [] { new Person { Id = 10, FirstName = "Amy", LastName = "Winehouse", Age = 27 } }) number of rows added Populates all related references on the instance with its primary key and saves them. Uses '(T)Id' naming convention. E.g: db.SaveAllReferences(customer) Populates the related references with the instance primary key and saves them. Uses '(T)Id' naming convention. E.g: db.SaveReference(customer, customer.Orders) Populates the related references with the instance primary key and saves them. Uses '(T)Id' naming convention. E.g: db.SaveReference(customer, customer.Orders) Populates the related references with the instance primary key and saves them. Uses '(T)Id' naming convention. E.g: db.SaveReferences(customer, customer.Orders) Wrapper IDbConnection class to allow for connection sharing, mocking, etc. Allow for mocking and unit testing by providing non-disposing connection factory with injectable IDbCommand and IDbTransaction proxies Force the IDbConnection to always return this IDbCommand Force the IDbConnection to always return this IDbTransaction Alias for OpenDbConnection Alias for OpenDbConnection Allow for code-sharing between OrmLite, IPersistenceProvider and ICacheClient Gets the explicit Converter registered for a specific type Return best matching converter, falling back to Enum, Value or Ref Type Converters Quote the string so that it can be used inside an SQL-expression Escape quotes inside the string Nice SqlBuilder class by @samsaffron from Dapper.Contrib: http://samsaffron.com/archive/2011/09/05/Digging+ourselves+out+of+the+mess+Linq-2-SQL+created Modified to work in .NET 3.5