This project is read-only.

Version History


- Fixed the broken Join implementation
- Fixed the unit test that should have caught the broken join implementation (NOTE: try / catches around Assert statements will swallow failed assertions unless they are rethrown in the catch handler - d'oh!)
- Added a new Insert overload that provides a fluent interface for configuring an insert, including a GetIdentity fluent function.
- Added ability on Query and Insert fluent interface to "BuildQuery" that adds parameters and returns query text without actually running the query. This allows you to run it manually, or make changes to the query before running it.
- Fixed bug where dialect factory was not detecting sql server.

Easier support for using data readers directly:
            List<Person> people = new List<Person>();

                .DataReader(r =>
                    while (r.Read())
                        Person p = new Person();
                        p.ID = r.GetInt32(r.GetOrdinal("ID"));
                        p.Name = r.GetString(r.GetOrdinal("Name"));
                        p.Age = r.GetInt32(r.GetOrdinal("Age"));
                        p.IsHappy = r.GetBoolean(r.GetOrdinal("IsHappy"));
                        p.BirthDate = r.GetDateTime(r.GetOrdinal("BirthDate"));

NEW in 3.8
- Overhauled the MapBuilder to use a fluent interface for creating mappings without attributes.

NEW in 3.7
- Added JOIN functionality
- Finished hooking up the MapBuilder feature so that it automatically adds the mappings to the MapRepository.
- Added fluent methods to the MapBuilder
New documentation to come soon
NEW in 3.6 - Implemented a bug fix for generated Insert and Update queries when the column name differs from the property name (fix submitted by vitidev)
NEW in 3.5 - Added a Dialog class to support variances in MDM features that differ between different database providers
NEW in 3.4 - Medium Trust environments are now supported via the new "SimpleReflectionStrategy".
NEW in 3.2 - Added the Marr.Data.Mapping.MapBuilder class. This allows you to register column and relationship mappings for a given entity type in code, and without the use of mapping attributes.
NEW in 3.1 - Linq support for Query and QueryToGraph methods
NEW in 3.1 - TableAttribute added to map a class to a table
NEW in 3.0 - Ordering data by grouping keys will no longer be required to load object graphs
NEW in 3.0 - Ability to load an object graph in multiple user-defined passes (using multiple queries)
NEW in 2.6 - Query now has a new fluent querying syntax overload that can be used to perform any kind of query (manual query, auto generated query, graph or single entity queries)
NEW in 2.4 - Pluggable IMapStrategy allows you to create your own convention for mapping columns and relationships
NEW in 2.3 - QGen filter now supports StartsWith, EndsWith and Contains
NEW in 2.0 - CRUD query generation
Attribute based
No special base classes to inherit
Uses a fast reflection library that employs caching techniques (FastReflection by Renaud Bédard - More info here:
Can load entity graphs utilizing one-to-many, one-to-one and inheritance relationships
Can automatically create and load parameters for updates / inserts
Parameters can be manually added using a fluent interface (no longer will you have to use more than one line to add a parameter with the proper settings)
Built in support for enums via "type converters". Enums can be converted to strings or ints and back automatically
A pluggable architecture allows you to create your own converters for any data type that will automatically massage data values as they go into or out of the database
Support for datasets
Support for data readers

Last edited Jul 4, 2011 at 3:42 AM by jmarr, version 3


No comments yet.