Donate Share

Gentle.NET Object Persistence Framework

File Release Notes and Changelog

Release Name: 1.5.0

Notes:

IMPORTANT NOTE(S)
  
  GENTLE IS NO LONGER OFFICIALLY MAINTAINED (but I will offer commercial
  support if anyone dares to use it in spite of this warning).
  
  This release is a wrap-up release with bugfixes and improvements made since 
  1.2.9 was released in the summer of 2006.

  Existing users: Please be sure to at least review the BREAKING CHANGES, 
  DOCUMENTATION, SOURCE CODE and CONTRIBUTORS sections below.
  
  
BREAKING CHANGES  
  
  Gentle 1.5.0 has been ported/upgraded to Visual Studio 2008 and the code base
  now requires .NET 2.0 to run.
  
  There are new generic accessors on the Broker, PersistenceBroker, Transaction 
  and ObjectFactory classes. For consistency, old methods returning ArrayList 
  instances have been upgraded to return generic List<T> instances (like the 
  new generic list access methods). This will break existing code if you 
  downcast the IList return type to ArrayList.
 
  I've updated provider libraries for SQLite, MySQL, PostgreSQL, Firebird and 
  DB2 to the most recent ones available. No code changes apart from namespace 
  updates were required to do this. However, these changes remain untested and 
  might therefore introduce bugs or exhibit modified behavior compared to the 
  much older versions.
  
  Please review the CHANGELOG for a more complete overview of changes.
  

DOCUMENTATION

  The wiki and issue tracker are currently offline, with no immediate plans to 
  restore them as they were. The best learning resources for Gentle are 
  therefore bundled with this release. The Documentation folder contains a PDF
  export of the original Wiki content along with API documentation for Gentle 
  itself.

  If someone wants to host the Wiki I'll be happy to supply the appropriate
  database backups (PostgreSQL dump files) and license files for restoring the 
  original content. I might also have Confluence XML backups that are database 
  independant but would need to investigate whether that is the case.
  

SOURCE CODE
  
  The source code is currently available at the following URL:
  
  	https://code.mertner.com:8443/svn/gentle/gentle/
  	
  Note that this URL might change in the future, although I'll try to keep it 
  around if possible. If you want a copy of the source and cannot find it, feel
  free to email me at morten@mertner.com
  	  
  The project home remains at SourceForge, where you can download the current
  release as well as access the support forums. Due to spammer abuse all 
  mailing list messages are moderated, and most likely I'll soon close down the
  mailing list facility altogether.
      
    http://sf.net/projects/gopf
      

SUPPORT

  If you are using Gentle and would like commercial support, please contact me 
  through my business email at morten.mertner@codeworks.eu
  
  You are also welcome to try the SourceForge forums - people have generally 
  been very helpful and patient in helping to resolve other peoples issues.
  

UPGRADING

  Please review the CHANGELOG entries added since the version you are using and
  apply any changes as needed. If you find a "breaking" entry that is not 
  listed in the CHANGELOG, please let me know so I can fix it.


INSTALLATION

  Please review the included documentation first, in particular the Getting 
  Started and Using Gentle pages.
  
  You can find sample configuration files in the Configuration folder. You must
  use either a standalone Gentle.config or declare a section in App/Web.config.
  
  Please also remember to uncomment the provider libraries you wish to use, 
  make sure to reference them from your project so that they get copied to the
  bin folder, and to set a valid connectionString property for the 
  DefaultProvider tag in the configuration file.

  VS.NET HELP INTEGRATION

  Execute the register.bat file found in the Documentation/Help subfolder. This 
  will install the included .HxS and .HxC help files, which will provide you with 
  context-sensitive help lookup from within Visual Studio.

  You will need the tools H2Reg and MS VS.NET Help Integration Kit. If you do not
  have these tools, please visit the following link to learn about their use and
  where to obtain them: http://www.codeproject.com/csharp/VSHelpIntegration.asp

  COMPILING GENTLE
  
  You need Visual Studio 2008 or a compatible version of a build tool to compile
  Gentle. No precompilation steps should be necessary.
  
  You will also need to download and install the Microsoft Oracle Client in
  order to compile the Gentle.Provider.Oracle project.
  
  RUNNING THE TESTS
  
  You can find either database creation scripts or prepared database files for
  most of the databases supported below the Source/Gentle.Framework/Tests folder.
  Use these if you wish to run any of the included test cases.

  CODE GENERATORS
  
  Gentle is supported by both MyGeneration (http://www.mygenerationsoftware.com)
  and CodeSmith, two excellent template-based code generation tools. Both of 
  these tools are able to generate a Gentle prepared business object from an 
  existing database schema. 
  
  MyGeneration comes bundled with a Gentle.NET template and is the recommended 
  tool to use (the template offers the most features, is actively maintained, 
  works with the most database engines, and is able to generate code for an 
  entire database schema in one go). Use it, and create a complete Gentle-enabled
  data-access layer in less than a minute! 
    

CONTRIBUTORS

  Gentle was originally created by Morten Mertner and released as open source
  in january 2004. It was actively maintained for almost 3 years after the 
  initial release date culminating in a mature product with the 1.2.9 release
  in november 2006. 
  
  After this attention switched to producing a new version with fewer limitations 
  and better overall design. This task progressed at an ever slower pace as the 
  task proved to be fairly difficult and much too large for a single person to 
  overcome, and it was hard to maintain the belief that the effort was worthwhile
  given that all the interest was focused on LINQ and competing ORM products.
	Much code has been written and the source for Gentle 2.0 remains available if 
	anyone wants to tinker with it (it might not compile currently though).
  
  At this time I would like to extend a very special thanks to everybody who
  has been on board and helped out over the years, whether by answering forum
  posts, contributing code, reporting bugfixes or even just moral support.
  I'll not mention any names so as not to forget anybody, but you know who you
  are! 
  
  I'd also like to thank all of the "Gentle fans" who have praised the ease
  of use, stability or performance of Gentle over the years. Without these
  the project would never have made it as fas as it did.
  

LICENSE

  This library has been released under the GNU LGPL 2.1. Please see the
  full license text located in the file Documentation/license.txt.


SPONSORS

  Gentle is kindly being sponsored by the following organisations:

  Atlassian (http://www.atlassian.com) has provided free open-source licenses to
  their issue tracker JIRA and the "wiki-on-steroids" collaboration tool Confluence.
  Apart from being outstanding tools I can also personally confirm that their email
  support rocks!

  Kayako (http://www.kayako.com) has provided a free license to their excellent
  HelpDesk software. Note that while the software itself was excellent, the support
  volume for Gentle in the end did not warrant the use of the software.
  
  Cenqua (http://www.cenqua.com) has granted a license for their source code 
  repository browser FishEye.

  *Thanks* for supporting Gentle, and the open source movement in general!

  
CREDITS

  This library uses code written by third parties - my personal thanks to
  them all for their efforts!

  Npgsql is Copyright © 2002 The Npgsql Development Team.
  http://gborg.postgresql.org/project/npgsql/projdisplay.php

  Firebird provider is copyright 2002 Carlos Guzmán Álvarez.
  http://freshmeat.net/projects/firebird.netdataprovider

  The MySQL library is Copyright © MySQL AB.
  http://www.mysql.com/

  Thanks also to Mono team for use of the SQLite and SybaseAsa data providers.
  A major undertaking with a bright future! 
  http://www.go-mono.com

  The excellent MbUnit test framework is Copyright © Jonathan de Halleux 
  http://www.mbunit.org (also see http://www.mertner.com/confluence/mbunit)

  The log4net/Apache people require a specific greeting, and it goes like this:
  "This product includes software developed by the Apache Software Foundation
  (http://www.apache.org/).". 


Changes: This file is a summary of the actual changes. Please consult the repository history features for a full historical record of the changes. For a complete list of changes between any two releases, execute the Subversion command svn log -r <start>:<end> http://www.mertner.com/svn/gentle/gentle where <start> and <end> are the revisions to include in the output. Recent releases have their revision spans marked below (listed after the version number). CHANGELOG 2008-03-14 [v1.5.0] [1043:1237] This release is a wrap-up release with bugfixes and improvements made to Gentle since the last release. The project has been updated to use and support generics and can therefore no longer be used with .NET 1.1. The NullableType<T> structure should be supported, although this remains largely untested. Most provider libraries have been updated to recent releases. IPersistent has been refactored to use a bade interface IEntity that makes it easier to use Gentle in repository-style DALs. Note that Visual Studio 2008 is required for opening the project files. [v1.2.9] [974:1042] 2006-06-06 This release features a complete rewrite of the cache subsystem with significant performance improvements as a result. There have also been several minor improvements and bugfixes throughout the code base. [v1.2.8] [930:973] 2006-03-04 This release fixes a number of bugs throughout the library, and contains updated provider libraries for MySQL, PostgreSQL, Firebird and Sybase. Upgrading users should note that the namespace for TypedArrayItemBase has changed to Gentle.Framework. A preliminary provider library for DB2 has been added (helpers wanted for completing the implementation). Also note that the source repository has moved to a new URL (see above). [v1.2.7] [870:929] 2005-12-05 This release features improved performance and better transaction support. Logging has been cleaned up and is now fully categorized. NullValue can now be used with Guids. There have been improvements to the Firebird, MySQL and Oracle providers, and the log4net library has been updated. There have also been a number of general bugfixes and improvements. [v1.2.6] [821:869] 2005-10-10 This release fixes a range of bugs and annoyances throughout the code. Improvements have been made to inheritance mapping, validation, and logging. Gentle now checks that missing provider libraries are referenced before complaining. [v1.2.5] [803:820] 2005-07-16 This release fixes a bug introduced in 1.2.4 affecting the configuration subsystem. Error reporting and the cache subsystem have been improved. [v1.2.4] [762:802] 2005-07-08 This release adds working SQLite support, and contains important improvements to the configuration and caching subsystems. A vast number of minor issues have been resolved. [v1.2.3] [730:761] 2005-05-08 This release features improved error reporting, and corrects a large number of minor issues. An exception is now thrown for missing provider libraries defined in the config file. [v1.2.2] [717:729] 2005-04-04 This release fixes a bug introduced in 1.2.1 affecting reserved word handling. A bug affecting concurrency handling when using unnamed parameters was fixed. [v1.2.1] [630:716] 2005-03-31 This release adds a validation subsystem, as well as numerous improvements throughout. There have been critical bugfixes to core components; existing users should upgrade. Gentle is now CLS compliant, and Mono (1.1.4+) is fully supported. [v1.2.0] 2005-02-12 This release adds a provider for SQL Server CE, and improvements to the configuration subsystem, error reporting, and various other components. A bug affecting the use of multiple brokers has been fixed. MySQL users should upgrade due to critical bugs in the MySQL library shipped with previous versions. [v1.1.3] 2004-12-31 This release adds an improved configuration subsystem, and contains a large number of fixes and improvements affecting reserved word handling, serialization, database analysis, transactions, and more. [v1.1.2] 2004-10-25 This release contains a number of minor bugfixes and improvements. To compile Gentle from source you must first register the key used to sign the assembly in the CSP (see the README for additional info on this). [v1.1.1] 2004-07-04 This release contains bugfixes and performance improvements. [v1.1.0] 2004-06-21 This release adds dynamic loading of provider libraries, automatic lowest cost constructor selection, vastly improved transaction handling, a completely reworked configuration file handler, support for decorating private members, and many other improvements. There have been many fixes for Jet/Access, Firebird, MySQL and Sybase users. Please refer to the readme file for detailed upgrade instructions. [v1.0.4] 2004-05-17 This release adds preliminary support for Sybase. Support for GUIDs in SQL Server and BLOBs in both MySQL and SQL Server was added. Firebird support has been vastly improved and there are a number of minor fixes throughout. [v1.0.3] 2004-04-28 Updated provider library and Firebird support files [Carlos]. There may still be minor issues with Firebird but most testcases now run fine. 2004-04-25 Fixed a number of bugs in the MS Access and Firebird code. Various improvements and fixes were applied to some of the core classes. As of version 1.0.2 changes have been aggregated and are listed here with less detail. [v1.0.2] 2004-04-22 Database script for SQLite added [ch]. 2004-04-21 Added full support for Oracle access using the OracleODP provider [as]. 2004-04-15 Fixed a bug that caused test cases to interact and fail when executed all at once. If you encounter a failing test case try to run it on its own before reporting a bug. 2004-04-14 Fixed a bug that prevented the same column from appearing multiple times in the constraint list. Fixed a bug with paging and added test cases for both issues. 2004-04-12 Added support for soft deleting objects with a concurrency column by setting the concurrency value to -1. Rows marked with a concurrency value of -1 will not be returned by any of the retrieve methods. 2004-04-11 Added support for dynamically specifying the table name (see the Key class and ITableName interface for details on usage). Added support for paging (Next/Previous) to SqlResult. 2004-04-09 Fixed a missing type conversion for Oracle users [Andreas Seibt, Petrel]. [v1.0.1] 2004-04-08 Added support for generating a DataView from an SqlResult. The analyzer for SQL Server now supports obtaining the identity columns. Fixed a bug in SqlResult where column names would only be available if rows were retrieved. 2004-04-05 Fixed a number of bugs that would prevent test cases from running if concurrency control was disabled. [v1.0.0] 2004-04-04 Added support for Enum properties (will be persisted as integers). Introduced a new sample parent class (GentleBase) providing defaults for the primary key field as well as concurrency control. Changed the Member class to test the new base class. 2004-04-03 Added support for automatic concurrency control (update statements only) using the ConcurrencyControlColumn attribute. Added a new configuration key "Options/ConcurrencyControl" to allow Gentle to ignore the concurrency attribute. Applied a number of minor fixes kindly reported back by users. [v0.9.9] 2004-03-21 Updated the UserRole test cases to not use reserved words and updated the database scripts for all databases. Applied a number of fixes for Oracle support [Andreas Siebt]. Various minor fixes throughout. 2004-03-16 Fixed GentleList implementation [bugfixes; list content is no longer touched for n:m relations (relation management only); objects in 1:n lists are still managed]. Fixed a number of bugs for Oracle [Andreas Siebt]. 2004-03-14 Implemented list classes GentleList and GentleRelation for automatic management of 1:n and n:m relations. Added testcases for the Gentle list classes. Fixed a number of bugs affecting objects with aggregated primary keys. 2004-03-13 Added support for Oracle [Andreas Siebt]. Minor bugfixes. Added reserved word checking for MS SQL Server and MS Access. 2004-03-09 Renamed Config handler to GentleSectionHandler and the configuration section name to "gentle". Fixed the Transaction class. Passing an empty SqlResult to ObjectFactory.GetInstance now throws an error. [v0.9.8] 2004-03-07 Added support for MS Access (Jet) [Vinicius (Vinny) A. DaSilva]. Added support for Firebird [Carlos Guzmán Álvarez]. Fixed a number of bugs affecting MySQL and PostgreSQL users. Added support for limit and offset clauses to the SqlBuilder. 2004-02-29 Implemented caching database metadata analyzer for SQL92 compliant engines (replaces SqlServerAnalyzer for MS SQL Server). Updated the NAnt build scripts [Clayton Harbour]. 2004-02-26 Made ObjectMap.Construct return proper GentleExceptions. Fixed a bug where DateTime.MinValue would always translate to null. Fixed a bug causing Broker.Retrieve only to work when the Key contained primary key field(s). Fixed compilation on Mono. [v0.9.7] 2004-02-24 Fixed a bug introduced in 0.9.6 that broke all error reporting. Added support for primary key detection to SqlServerAnalyzer. Added support for using SqlResults as In/NotIn constraint input to SqlBuilder. [v0.9.6] 2004-02-22 Merged changes to use log4net for logging [Clayton Harbour]. Renamed FrameworkException to GentleException and various minor code cleanups. 2004-02-16 Added support for row limit (TOP) and order by clauses to SqlBuilder. Fixed a bug with property/column mapping [Clayton Harbour]. Fixed a bug where SqlBuilder in some cases would generate illegal sql for Operator.Equals. Added support for Operator.NotEquals. [v0.9.5] 2004-02-15 Added support for Operator.In and Operator.NotIn constraints using an ArrayList of data elements and property name. Generalized the test cases for SQL factory verification to be provider independent. 2004-02-14 Added fix for DateTime null handling (now works without setting DefaultValue). Added missing Error declarations and corresponding external message definitions. [v0.9.4] 2004-02-09 Added partial metadata extraction for PostgreSQL. 2004-02-08 Implemented support for transactions. 2004-02-06 Added automatic metadata extraction support for MySQL. Added proper handling of null values, as well as string and datetime clipping for invalid values. Some code cleanup and fixes. [v0.9.3] 2004-02-04 Added support for extracting field type/size information from the system tables (MS SQL Server only, for now). Improved the SqlResult and SqlStatement classes with a bunch of convenience methods. Various minor improvements and fixes. 2004-02-03 Extended TableColumn to allow specification of DbType, Size and DefaultValue. Added support for the new TableColumn properties throughout the framework. [v0.9.2] 2004-02-02 Added support for converting between business objects and DataViews. Use the new CustomView attribute to declare views. 2004-02-01 Started work on object caching using Michael Bouck's cache class. Use the TableName attribute to set caching strategy per type. Also started work on ObjectGraph for automatic join resolution. 2004-01-31 Added a bunch of data accessor methods to the SqlResult class. 2004-01-30 Fixed the problem with the ByteFX MySQL provider. Added support for translating foreign key columns using the ForeignKey attribute. [v0.9.1] 2004-01-27 Added MySQL and SQLite support. The ByteFX provider for MySQL appears to be broken. SQLite is yet untested. 2004-01-25 Publishing of errors to the Windows event log no longer uses the ExceptionManagement libraries (dependency removed). Reworked some of the Config file handling. [v0.9.0] 2004-01-21 Initial source code release.