Skip to content
This repository has been archived by the owner on Dec 23, 2017. It is now read-only.

Comprehensive Feature List

Ovan Crone edited this page Mar 24, 2015 · 6 revisions

####Commands Types

  • Scalar
  • NonQuery
  • Query
  • Multiple ResultSet Queries (up to 7)
  • SQL Text and Stored Procedure

Robust result mappings

  • POCO (Plain Old CLR Object) via Expression Trees
  • Dynamic
  • Built-in types for single column results (int, string, bool, DateTime, Guid, decimal, Int64, etc.)
  • Custom Mappings (For objects that are not POCOs that may have additional restrictions)
  • KeyValuePair<,> Custom mapping provided "out of the box"
  • Declarative attributes can control aliases and ignore functionality.

Versatile parameter definition

  • Parameters are provided through an anonymous OR optionally typed "Filter" parameter at execution call.
  • An additional object parameter on Execute allows for separating business parameters from control parameters. (security, sorting, paging, etc.)
  • A third parameter lets you create your own parameters and pass them to the call. (params DbParameter[] explicitParameters)
  • Output parameters are supported via explicitParameters.
  • Table Valued Parameters in SQL Server are available in the Susanoo.SqlServer nuget package.

####Connection

  • Susanoo handles command life-cycle for you in most cases, but you can take control at any time.
  • Shared connections allow for connection specific features such as Temp Tables in SQL Server.
  • Full transaction support via System.Transactions.TransactionScope

####Performance

  • Mappings are compiled BEFORE execution and cached which is one of several performance features that make Susanoo blazing fast.
  • Dynamic mapping uses a custom object structure designed to play well and fast with ADO.NET
  • The Dynamic mapping object DynamicRow can be directly mapped to for additional performance avoiding dynamic, but still refraining from maintaining a POCO.

####Usability

  • Fluid fluent syntax
  • Deferred execution
  • Simplified parameter handling
  • Lower risk than other solutions of left open connections.
  • An exceptionally good fit for repository and unit of work patterns. (We call them Contexts)
  • Command Modifiers (For CommandType.Text Only)
  • .BuildWhereFilter wraps a provided SQL statement in a new select with a Where clause built from properties on a filter instance.
  • .AddOrderByExpression allows passing a parameter that gets injected into the wrapped SQL statement before execution and NOT included in parameter list.
  • .OffSetFetch in Susanoo.SqlServer allows for SQL Server 2012 syntax of paging results, along with OrderBy and where filter, server-side data grids are cake.

####Extensibility

  • Single entry point, CommandManager, allows for less feature confusion.
  • Bootstrapper interface and class provide an easy way to override or extend core functionality
  • Custom mappings are registered in the bootstrapper.
  • Single responsibility interfaces at every step of command definition are easy extension points for extension methods.
  • A command modifier pipeline allows registering delegates/methods to adjust command text, command type, and parameters just before execution

####Debugging

  • Execution and mapping exceptions funnel into an overridable method in the bootstrapper OnExecutionException and provide command text and parameters involved.
Clone this wiki locally