Removing bad files.
[castle.git] / ActiveRecord / Changes.txt
blob733c0791902686d07bc62ac6ac962cc57cbd7e80
1 Release Candidate 2
2 ===================
4 - Applied Tim Haines' patch adding the ability to verify if the models match the db 
5   structure. This can be done by setting the "verifyModelsAgainstDBSchema" attribute to true on
6   the ActiveRecord configuration node, or using the method VerifySchema on ActiveRecordStarter
8 - Applied Lee Henson's patch change Exists implementation to use ISession.Get 
9   This is required for lazy loaded classes as the old implementation would always 
10   return true for them.
12 - Applied patch by David N. Godfrey that
13   - Refactored ActiveRecord to rely on Castle.Components.Validator to perform validations
14   - Fixed an old behavior where ActiveRecord didn't notify the session scope about sessions
15     that were invalidated due to database errors. 
17 - Pushed processing of configuration into InPlaceConfigurationSource so both
18   ActiveRecord and ActiveRecordFacility could handle it in one place.
20 - Fixed AR-151
21   "XmlGenerationVisitor.MakeCustomTypeAtt doesn't support generic types"
23 - Applied Matthew Robinson's patch fixing AR-152
24   "Incorporation of subselect fetch strategy"
26 - Added the CompositeUserTypeAttribute and allowed the use of NHibernate's ICompositeUserType (AR-128)
28 - Applied the Marc-André's tests patch (AR-136).
30 - Applied Simon Laroche's patch fixing AR-141
31   "Support for NHibernate nested-composite-element"
33 - Fixed the Validation for Generic types (AR-122 and MR-237)
35 - Fixed working with Lazy objects.
37         Classes that are marked with [ActiveRecord(Lazy = true)] break in the EnsureInitialized function with the exception:
39         Castle.ActiveRecord.Framework.ActiveRecordException: 
40         You have accessed an ActiveRecord class that wasn't properly initialized. The only explanation is that the call to ActiveRecordStarter.Initialize() 
41         didn't include CProxyTypeCastle_ActiveRecord_Tests_ModelVeryLazyObjectModel_NHibernate_ProxyINHibernateProxy1 class
43 - Applied Andrew Denysenko's patch fixing AR-142 
44   "Allow setting "batch-size" on collections"
46 - Applied Roy Tate's patch fixing AR-143 
47   "XmlGenerationVisitor generates incomplete XML mapping 
48    for BelongsTo with composite key"
50 - AR-140 - Patch to allow  "The <component> element allows a <parent> subelement that maps a property of the component class as a reference back to the containing entity."
53 -       Applying commutative patch from Roy Tate: AR-133, AR-139, AR-138
54         ActiveRecordMultiQuery, ActiveRecordCriteriaQuery, CriteriaHelper, CountQuery.
56 - AR-129: Applied patch by John Hurrell
57   "Implement NHibernate's "foreign-key" Attribute"
59 - AR-130: Fixed
60   "BelongsTo attribute does not support UniqueKey"
62 - AR-135: Applied patch from Rafael Steil - better error message when using non interface type for an association.
64 - AR-134: Applied patch from Kristofer Goss. Can now use [Field] on [Nested] types.
66 - AR-131 Applied patch Dave Godfrey. Using [Fetch] to specify the fetch strategy NHibernate will use. Note that this [Obsolete] the OuterJoin property on BelongsTo, in favor of the Fetch property.
68 - Added RawXmlMappingAttribute base class, which can be used to give Active Record additional mapping from external source. 
69   This functionality was added to support rare cases that Active Record do not support (mapping an entity from a 3rd party assembly, etc).
70   Prefer to use the standard Active Record features over this.
72 - Applied John Hurrell's patch fixing AR-94
73   "ScalarQuery<T> on an empty table creates a null reference exception"
75 - Applied Ernst Perpignand's fixing AR-126
76   "Collection of dependent objects"
77   
78   Quoting 'patch implementing collection of dependent objects as per Hibernate documentation section 7.2'
80 - Fixed AR-125
81   "Cannot use webservices or XmlSerializer on classes derived from ActiveRecordValidationBase because of IDictionary PropertiesValidationErrorMessage"
83 - Applied Patrick Earl's patch, adding event ModelCreated that allows to re-configure the model before 
84   generating the XML for NHibernate.
86 - Added HqlNamedQuery attribute and allowed to use the Import attribute at the assembly level
88 - Applied Brian Romanko's patch fixing AR-104
89   "IsUniqueValidator does not work properly with nullable primary keys"
91 - Add Count(ICriterion[] criteria) overrides to ActiveRecordMediator and ActiveRecordMediator.Generic (original patch from Andy W. Dobbels)
93 - Fixed AR-120 
94   "Add support for the <Operation>AndFlush family of methods to ActiveRecordMediator"
96 - Applied Jan Persson's patch fixing AR-122
97   "Problems validating inherited properties when using generics"
99 - Applied Edward Kreis' patch fixing AR-124
100   "ActiveRecord OneToOne attribute's "constrained" parameter doesn't appears in a NHibernate mappings"
102 - Applied John Hurrell's patch fixing AR-123 
103   "Additional OnFlush functionality"
105 - Exposed some IValidator's properties.
107 - Renamed IActiveRecordQuery.Target to IActiveRecordQuery.RootType
109 - Added SetRange to ProjectionQuery<,>
111 - Made HasMany a bit smarter when dealing with Map elements. 
113     AR now can guess the IndexType, the MapType and the Table name from the IDictionary<,> property.
114     (DotNet 2 only.)
116 - AR-118 added NoSetter.LoweCase property access option.
118 - Fixed AR-117 "ActiveRecordBase CRUD Methods Ignore SessionScope FlushMode"
120     The operations Save, Create, Delete, Update will not flush the session anymore
121     The operations SaveAndFlush, CreateAndFlush, DeleteAndFlush, UpdateAndFlush will
123 - Removed HqlBasedQuery.Count operation as it didn't work for complex queries
125 - Fixed AR-110 "Support rollback on TransactionScope Dispose without commit."
126   
127   Now you can create a TransactionScope defining the behavior
128   if the dispose is reached and neither a votecommit nor voterollback was called
130 - Applied Andrew Peters' (see AR-105) with the following changes
132         - [breaking change] Renames ActiveRecordBase.CountAll to ActiveRecordBase.Count 
133           as several overloads are by criteria and IMHO Count is a better, more general name.
135         - Adds an overload of Count that accepts an ICriterion[] - Modified CountQuery 
136           to use NHibernate 1.2 Projections
138         - Reimplements (http://support.castleproject.org//browse/AR-100) so that it uses 
139           the new Count overload instead of FindAll.
141         - Filled in as many missing doc comments as I could before my eyes hurt :-)
143         - Renamed "criterias" to "criteria" in method signatures - "criterias" is not a word.
145         - Reformatted code. 
147 - Fixed AR-115 Exists always returns True for lazily-proxied classes
148   Changed FindByPK to use Get/Load according to its parameters.
150 - Included PrimaryKeyType.Custom and property CustomGenerator:Type
151   allowing one to supply its own generator
153 - Included PrimaryKeyType.Counter and PrimaryKeyType.Increment
155 - Applied patch from Drew Burlingame 
156   Add ActiveRecordBase<T>.Exists(params ICriterion[] criterias) 
157   Method also added to ActiveRecordBase.
159 - Applied patch by Andrew Peters fixing AR-97
160   "Pluralization of table names"
161   
162   This patch introduces the pluralizeTableNames attribute on the configuration
163   which, if set to true, pluralizes the ActiveRecord types tables where no name
164   was specified.
165   
166   For example:
167   
168   [ActiveRecord]
169   public class Student : ActiveRecordBase<Student>
170   
171   The table name will be infered as 'Students'
172   
174 - Applied patch by Ernst Naezer fixing AR-93
175   "Scaffolding / ARdatabind crash when Typeof is not supplied in the HasMany attribute."
177 - Applied Lee Henson's patch fixing AR-88
178   "Move GetFieldOrPropertyValue from ConfirmationValidator to AbstractValidator"
180 - Applied Lee Henson's patch fixing AR-86
181   "Expose DetachedCriteria on ActiveRecordBase<T>.SlicedFindAll"
183 - Fixed AR-84:  ActiveRecord TransactionScope should export interface to set IsolationLevel
184   Now you can specify the isolation level when you create a TransactionScope
186 - Applied Carlos Ble's patch adding Replicate support to ActiveRecordBase
188 - Moved ProjectionQuery and ScalarProjectionQuery to Castle.ActiveRecord.Queries, with the rest of the queries.
190 - Added untyped projection support, using just ProjectionQuery<Post>, which uses object[] tuples.
192 - Added real projection support, which allows the following code:
193 ProjectionQuery<Post, PostTitleAndId> proj = new ProjectionQuery<Post, PostTitleAndId>(
194         Projections.Property("Title"), Projections.Property("Id"));
195 ICollection<PostTitleAndId> posts = proj.Execute();
196 foreach(PostTitleAndId titleAndId in posts)
198         PostsList.Add( new ListItem(titleAndId.Title, titleAndId.Id) );
199         
202 - Renamed ProjectionQuery<T> ScalarProjectionQuery<T>, in preperation for real projections.
204 - Added DetachCrietia support in ARBase<T>, which allows integration with NQG, and in general enables taking advantage of the full criteria API.
205    Improved methods are FindOne, FindAll, FindFirst
206    
207 - Move to used NHibernate 1.2 rev #2352
209 - Applied Josh Robb's patch adding a check for isWeb=true on the Session module.
211 - Returned to the default lazy false behavior.
213 - Will automatically initialize entities when loading outside of scope.
215 - Removed IModelNode since it was no longer of any value.
217 - Added XML Documentation to all public/ protected methods
219 - Moved to using NHibernate 1.2 beta 1
220   IEntityPersister instead of IClassPersister
221   I had some issues with Nullables.dll support, but mainly because the hard coded version number.
222   Different DB Tests failed because of the way NHibernate changed transaction handling (more thorough cleansing of them), I manually saved the transaction executed, and they tests pass now.
223   
224   I added type guessing to ISet<> (set), IList<> (bag), ICollection<> (bag), IDictionary<>(map)
225   
226   The nicest new feature IMO is this:
227   
228   ProjectionQuery<Blog, int> proj = new ProjectionQuery<Blog, int>(Projections.RowCount());
229   int rowCount = proj.Execute();
230   Assert.AreEqual(1, rowCount);
233 Release Candidate 1
234 ===================
236 - Changed name of mapping files generated when isDebug=true. They now follow the NHibernate convention of name.hbm.xml
238 - Refactored: CompositeKey is not a class level attribute anymore
239   (minor breaking change)
241   Instead of
243     [PrimaryKey]
244     public SomeClass Id { get/set }
245     
246   You must use
248     [CompositeKey]
249     public SomeClass Id { get/set }
250   
252 - Added support for queries using the SQL language instead of HQL, 
253   on classes derived from HqlBasedQuery (SimpleQuery, ScalarQuery, etc).
255 - Added ActiveRecordModel.GetModels(), which returns an array containing every registered ActiveRecordModel.
257 - Fixed AR-53
258   "Unique key on multiple columns"
260   Introduced UniqueKey on PropertyAttribute and FieldAttribute
261   
262 - Introduced the following properties on PropertyAttribute and FieldAttribute:
264   - Index
265   - SqlType
266   - Check
268 - Fixed AR-78 
269   "Allow users to specify autoImport"
270   
271   Use the property UseAutoImport on ActiveRecordAttribute to control auto-import
273 - Resynched ActiveRecordAttribute with NHibernate <class> mapping. Added:
275   - SelectBeforeUpdate
276   - Polymorphism
277   - Mutable
278   - BatchSize
279   - Locking
281 - Fixed AR-31
282   "Create property CustomPersister or Persister (Type) on ActiveRecordAttribute"
283   
284   Added Persister property to ActiveRecordAttribute
286 - Applied Marc-André's patch fixing AR-79
287   "ValidateIsUnique not working with TransactionScope"
289 - Added XmlIgnore to IDictionary field on ARValidationBase
291 - Added support for generic abstract base class for a type hierarchy per discussions with Don
292   Morrison on IRC. The Generic Abstract Base class must conform to all the previous rules to 
293   implement an abstract base class in a type hierarchy.
295   When initializing the class using the ActiveRecordStarter, you must use syntax similar to the
296   following:
298     ActiveRecordStarter.Initialize( GetConfigSource(),
299       typeof(Model.GenericModel.Entity<>), 
300       typeof(CompanyEntity), 
301       typeof(PersonEntity));
303   Please see the GenericJoinedSubClassTestCase.cs for an example.
305   All rules about covariance and contravariance still apply.
307 - Applied Michael Morton's patch adding support to NHibernate's INamingStrategy. 
308   This allow one to associate an implementation of INamingStrategy
309   through an attribute 'namingstrategytype' on activerecord config node
311 - Applied suggestion from Gokhan Altinoren fixing AR-77
312   "VisitPrimaryKey fails to generate correct <generator> xml 
313   element for PrimaryKeyType.Identity when the system culture is set to Turkish"
315 - Applied Michael Morton's patch fixing AR-76
316   "SemanticVerifierVisitor Issue With NHibernate User Types"
318 - Refactored CompositeKey support. Now instead of using 
320     [PrimaryKey]
321     public SomeClass Id { get/set }
322   
323     [CompositeKey]
324     public class SomeClass { ...
325   
326   You should use
328     [CompositeKey]
329     public SomeClass Id { get/set }
330         
331   The old way is still supported though.
333 - Applied Freyr Magnússon's patch fixing AR-75 
334   "SemanticVerifierVisitor causing fauly xml when using composit key"
336 - Added support for "ColumnPrefix" on [Nested] attribute. This change allows
337   a better usage of components, such as:
339     public class Name {
340       private String first, last;
341       
342       [Property("first_name")] public string First { ... }
343       [Property("last_name")] public string Last { ... }
344     }
345     
346     [ActiveRecord("children")]
347     public class Child {
348       private Name name, fatherName, motherName;
349       
350       /* maps to database columns: first_name and last_name */
351       [Nested] Name Name { ... }
352       
353       /* maps to database columns: father_first_name and father_last_name */
354       [Nested(ColumnPrefix="father_")] Name FatherName { ... }
355       
356       /* maps to database columns: mother_first_name and mother_last_name */
357       [Nested(ColumnPrefix="mother_")] Name MotherName { ... }
358     }
360 - Review OneToOneAttribute test case, added one more unit test
362 - Removed OuterJoin attribute from OneToOneAttribute, replaced by Fetch property
364 - Added PropertyRef to OneToOneAttribute
366 - Applied patch to patch from josh robb - FindAllByProperty now handles null values internallly.
368 - Applied patch from josh robb - FindAllByProperty now handles null values internallly.
370 - Applied Freyr Magnússon's patch fixing misbehave related to abstract classes that defines different
371   database boundaries: "ActiveRecordStarter Initialize method assembply overloads fail 
372   to add derived base types from config"
374 - Applied josh robb's patch "small fixup for length 
375   validator error messages where there is only a minimum or maximum specified"
377 - Fixed AR-73: "Dynamic type adding after initialization"
379 - Added some logging. That's just a start: the idea is to increase AR verbosity 
380   in order to reduce the need of debugging to diagnose problems.
382 - Refactored ActiveRecordStarter.Initialize to use ActiveRecordSectionHandler.Instance
384 - Introduced ActiveRecordSectionHandler.Instance to avoid repetitive code.
385   Now, instead of
386   
387   IConfiguration source = (IConfiguration) ConfigurationSettings.GetSection("activerecord");
388   
389   (or similar) you can use
390   
391   IConfiguration source = ActiveRecordSectionHandler.Instance;
392   
393   Bare in mind that it looks for a section named "activerecord" on the configuration
394   file associated with the AppDomain, and throws an exception if it cannot be found.
396 - Applied Marc-Andre's patch fixing AR-68
397   "Make ActiveRecordValidation.ValidationErrorMessages virtual to simplify localisation"
399 - Added SessionScope.Current static property to gain access to the
400   current ISessionScope implementation
402 - Changed ISessionScope:
403     Added FlushAction property
404     Added Flush method to allow people to have more control on when to flush
406 - Applied patch by Michael Morton <mmorton@wickednite.com>. Quoting explanation:
408 Since the generic base class varies with the type parameter 
409 (i.e. ActiveRecordBase<One> is not the same as ActiveRecordBase<Two>) 
410 there is no easy way to specify multiple configurations using the 
411 "type=" attribute.  There is also no easy way to create multiple 
412 subclasses as the documentation suggests for when using the non 
413 generic base class.
415 However, there is an easy fix for this.  Even though, for example, 
416 these two base types are "different", ActiveRecordBase<One> and 
417 ActiveRecordBase<Two>, they share the same generic type definition, 
418 namely "ActiveRecordBase`1".  With a small change to the function 
419 "GetRootType" in "SessionFactoryHolder.cs" to make it look at the 
420 generic type definition when dealing with a generic type, instead 
421 of the generic type itself, you can once again easily access multiple databases.
423 Usage:
424 You can now create multiple base types for each of your databases, such as...
426 class MyBaseOne<T> : ActiveRecordBase<T> { }
427 class MyBaseTwo<T> : ActiveRecordBase<T> { }
429 ... and then specify config for each by using the "type=" attribute like so ...
431 <config type="MyBaseOne`1, MyAssembly">
432 </config>
433 <config type="MyBaseTwo`1, MyAssembly">
434 </config>
436 Any subclasses of those will then get the correct configuration 
437 settings.  I have been using this change in my own builds for a 
438 couple weeks now and it seems to be working ok.  I have not 
439 written any tests specifically for it, yet, but wanted to get 
440 it out there in case anyone was interested.
442 - Applied patch by Brian Romanko <me@brianromanko.com> allowing the use 
443   of different type for a Nested type (what NHibernate refers as a Component)
445 - Fixed AR-65: ActiveRecordBase<T> prevent users from using type inheritance
446   Refactored ActiveRecordBase<T> to extend ActiveRecordBase
447   Refactored ActiveRecordMediator<T> to extend ActiveRecordMediator
448   Could not do the same thing for the validation<T>
450 - Removed dependency on the Nullables library.
452 - Added native support for .NET 2.0 Nullables.
454 - Applied Brian Romanko <me@brianromanko.com> patch fixing enum support
456 - Fixed AR-62: DifferentDatabaseScope not switching between databases
458 - Introduced HybridWebThreadScopeInfo which, as the name implies, 
459   uses both strategies to handle scope storage. Useful only for some complex scenarios
461 - Added support for RelationType.List.
463 - Simplified Exists<PkType> method on ActiveRecordBase<T>.
465 - Fixed AR-46 - OneToOne Attribute Does Not Support Specifying a Target Type
466   Added property MapType to OneToOne attribute
468 - Added ActiveRecordStarter.ResetInitializationFlag. Useful for test cases 
469   that invoke Initialize multiple times
471 - Fixed AR-52 - Dont allow one to invoke Initialize more than once
473 - Added some flexibility into ActiveRecord Queries. They are now mutable,
474   which means we now have methods like 'SetParameter', 'SetParameterList' and
475   'SetRange'; and the 'Query' property is now read-write.
477 - Added support for query modifiers in ActiveRecord Queries. Any object implementing
478   IQueryModifier can be added to an ActiveRecordBaseQuery, using the 
479   (protected) 'AddModifier' method. Parameters and query ranges 
480   are implemented as query modifiers.
482 - Fixed AR-39: Added virtual to IsValid on ActiveRecordValidationBase/<T>
484 - Fixed AR-45: Added BindingFlags.NonPublic to DefaultBindingFlags on ActiveRecordModelBuilder
486 - Added Element to RelationAttribute, now can map relations of simple types
487    Usage:
488          [HasMany(typeof(string), "ItemId", "Elements", Element = "Name")]
490 - Applied Antonio's patches 
491   See http://forum.castleproject.org/posts/list/457.page and 
492       http://forum.castleproject.org/posts/list/566.page
494 - Added Debug to IConfiguration Source. If set then XmlGenerationVisitor will save nhibernate mapping files to the AppDomain.BaseDirectory. 
495   Usage: if you're the XmlConfigurationSource or the Section add the isDebug="true" attribute
497 - Added support to CompositeKeys as Foreign Keys (kudos to G. Richard Bellamy)
499   BelongsToAttribute - Added CompositeKeyColumns property.
500   HasAndBelongsToManyAttribute - Added CompositeKeyColumnKeys and CompositeKeyColumnRefs.
501   HasManyAttribute - Added CompositeKeyColumnKeys.
502   VersionAttribute - Added support for UnsavedValue.
503   SemanticVerifierVisitor - Added checks to ensure the composite key attributes are used properly.
504   XmlGenerationVisitor - Added output to support mapping the composite key attributes, as well as the unsaved-value attribute for Version.
506   In general, the changes are motivated by the need to have AR map to 
507   legacy data, where composite keys are used as both primary and foreign 
508   keys. The current AR support for CompositeKeys does not support 
509   associations, this patch does.
511   There are some caveats when using this, which are driven by the NH 
512   implementation. An assigned identifier (like all CompositeKeys and 
513   many string PrimaryKeys) cannot be used to determine whether an instance 
514   is detached or transient - since it's assigned by the application, it's 
515   never null. Therefore, you must use another strategy, NH will misbehave 
516   around the way it persists the instance to the database. That is why the 
517   VersionAttribute had to have the support for UnsavedValue - the UnsavedValue 
518   property of the Version is used by NH to determine the state of the instance.
520   For a discussion of the appropriate mappings and usage, see "Hibernate in Action," pgs. 330 - 335.
522 - Added SessionScopeWebModule which hooks BeginRequest and EndRequest initializing and 
523   destructing a SessionScope properly. In order to use it add to httpModules section 
524   (web.config):
525   
526   <system.web>
527     <httpModules>
528       <add name="ar.sessionscope" type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord" />
529     </httpModules>
530   </system.web>
532 - Added lifecycle methods that can be overriden:
534   . OnSave
535   . OnUpdate
536   . OnLoad(id)
537   . OnDelete
539 - Applied patch from Ahmed Ghandour <aghandour@rydexinvestments.com> adding the methods
540   FetchCount and Exists to ActiveRecordBase
542 - Applied patch from Dave Godfrey fixing nested classes with relations problems (http://forum.castleproject.org/posts/list/457.page)
544 - Fixed a stack overflow exception when using IsUnique inside a session scope.
546 - You can now apply IsUnique to a property that also has PrimaryKey on it without problem.
548 - Resolved IsUnique bug with ActiveRecordValidationBase<> (it was non functional)
550 - Resolved test bugs with IsUnique for .net 1 and .net 2.
552 - Refactored query support:
553   - Introduced generic interface IActiveRecordQuery<T>, extending IActiveRecordQuery, for strongly-typed Execute() method support;
554   - Added IActiveRecordQuery.Enumerate(), for memory-intensive queries;
555   - Introduced HqlBasedQuery, decoupling ActiveRecordBaseQuery from HQL usage;
557 - Added ValidateCreditCard validation attribute.
559 - Added ValidateLength validation attribute.
561 - Added support for .Net 2.0 Connection Strings in the config file, using this method:
563 <activerecord>
564         <add key="hibernate.connection.connection_string" value="ConnectionString = ${ConnectionStringKey}" />
565 </activerecord>
567 <connectionStrings>
568         <add name="ConnectionStringKey" connectionString="The Connection String"/>
569 </connectionStrings>
571 This allows to take advantage of the connection string encryption as well as manage them using the built in tools.
573 - Added Exists<PkType>(PkType id) support to allow for checking of an object's existance 
574   in the datastore.
576 - Brought ActiveRecordBase.Generic inline with ActiveRecordBase feature wise.  
577   Public Static Methods are now present on all ActiveRecordBase.Generic objects for common tasks such as Find, FindAll, etc.
579   <This is a breaking change.>
580   
581 - Added support for NHibernate dynamic-update, dynamic-insert to ActiveRecordAttribute
583 - Simplified NHibernate markup generation for testing
585   Attributes are now written in one of two ways. Tags that have both an open and close 
586   will have no space at the end of the attributes on the opening tag, while tags that 
587   have no contents (<tag />) will be written with one space after the last attribute.
588   
589   Examples:
590   
591   <openclose attrib="test" attrib2="test"></openclose>
592   
593   <noclosetag attrib="test"/>
595 - Added ActiveRecordValidationBase<> to support validation on Generic AR classes
597 - Updated DeleteAll(Type targetType, IEnumerable pkValues) to support non int primary keys
599 - Add more hookable methods.
601 - Refactored Validation support to use NHibernate.IValidatable
603 - Brought ActiveRecordMediator.Generic inline with ActiveRecordMediator.  This is a breaking 
604   change (removal of a few methods/renaming of a few existing).
606 - Add import support (kudos to Dan Burnea)
607   [ActiveRecord, Import(typeof(ImportClassRow), "ImportClassRow")]
608   public class ImportClass : ActiveRecordBase
610 beta 3
611 ======
613 - Added FindAllByProperty, FindFirst and FindOne
615 - Added DeleteAll(type, where) (kudos to G. Richard Bellamy)
617 - Applied patch from Josh Robb. Added support for hooks on ActiveRecordBase<T>.
619 - DifferentDatabaseScope: so you can open a session using a different dbconnection
620   and persist your object model. Very experimental version
622 - Fixed: Support for multiple databases was completely broken.
624 - An implementation of ISessionFactoryHolder can be specified through the configuration, attribute sessionfactoryholdertype
625   on the config node.
627 - Added: ActiveRecordBase<T> - a generic form a ActiveRecordBase which relieves the need to re-write
628   all the base static methods to hide the type parameter and cast the result. Generics do it for you.
630 - Added: ActiveRecordStarter.CreateSchemaFromFile(filename) as an alternative to CreateSchema. 
632 - Added: Support for composite keys - composite key class must be serializable and implement both Equals and GetHashCode.
633   Not complete support, missing the NHibernate key-many-to-one element in the composite key.
634   
635 - Added: Support for Lazy loading class using BelongsTo. Will throw if there is a non virtual property that
636   also BelongsTo().
638 - Closed: (AR-24) ValidationException must contain the validation error messages
640 - Support for fields in addition to properties
642 - Added [Any], [Any.MetaValue] and [HasManyToAny] attributes.
644 - Small improvement on ActiveRecordModelBuilder (less intensive on IsDefined/GetCustomAttribute)
646 - IThreadScopeInfo introduced. Two implementations: ThreadScopeInfo and WebThreadScopeInfo. 
647   ThreadScopeInfo is the default implementation. You can use WebThreadScopeInfo by simply using 
648   isWeb="true" on the configuration node:
649   
650   <config isWeb="true">
651     ..
652   
653   Or you can provide your own implementation specifying the full type name
655   <config threadinfotype="my.threadinfotype, my.assembly">
656     ..
658 beta 2
659 ======
661 - Transaction support: lots of minor fixes
663 - Added support for map relations. 
664   Necessary to specify Index and IndexType on the HasMany (or HasAndBelongsToMany)
666 - IsUnique validator fix
667   
669 Version 0.0.1.5
670 ===============
671   
672   Inner workings fully rewritten, better test cases coverage
674   Added SlicedFindAll
677 Version 0.0.1.4
678 ===============
680   Implemented support for Joined Subclasses
682   Implemented initial support for validations
685 Version 0.0.1.3
686 ===============
688   Applied patch from John Morales (support for idbags)
691 Version 0.0.1.2
692 ===============
694   Applied patch from John Morales (support for sets)
696   Applied suggestion and fixes from "jianxiao jiang" <jiangjianxiao@gmail.com> (NHibernateDelegate)
699 Version 0.0.1.1
700 ===============
701   
702   Applied patch from Luiz César Kuriki <luizck@gmail.com> in order to support NHibernate's Component feature
703   
704   Applied modification suggested by Andrew Hallock and Craig Neuwirt in order to support HasOne relations.
707 Version 0.0.1.0 
708 ===============
710   Released (not changes to track yet)