4 - Relaxed the need for Types that represent database boundaries to extend
5 from ActiveRecordBase. Following AR-160 changes.
7 - Applied Michael Thomas' patch fixing AR-165
8 "UniqueKey property on BelongsToAttributed does not cause generation of unique-key
9 attribute in associated many-to-one xml element"
11 - Applied Lee Henson's patch fixing AR-167
12 "A CompositeKey class with multiple Equals() overloads throws exception"
14 - Applied Michael Thomas' suggestion to fix AR-170
15 "Indeterministic crashes when creating the NHibernate Mapping"
17 - Applied Lee Henson's patch fixing AR-172
18 "Support for collection-type attribute on HasMany"
20 - Applied Gautier's patch fixing AR-173
21 "Add a type parameter to the methods : CreateSchema, DropSchema,
22 GenerateCreationScript and GenerateDropScript"
25 "GenerateCreationScripts and GenerateDropScripts generate the scripts for only one database"
27 - Applied Mike Thomas' suggestion to make AR work with multiple databases without the
28 ARBase usage. This fixes AR-160
30 - Added support for SaveOrUpdateCopy() which facilities working with detached objects.
32 - Applied Tim Haines' patch adding the ability to verify if the models match the db
33 structure. This can be done by setting the "verifyModelsAgainstDBSchema" attribute to true on
34 the ActiveRecord configuration node, or using the method VerifySchema on ActiveRecordStarter
36 - Applied Lee Henson's patch change Exists implementation to use ISession.Get
37 This is required for lazy loaded classes as the old implementation would always
40 - Applied patch by David N. Godfrey that
41 - Refactored ActiveRecord to rely on Castle.Components.Validator to perform validations
42 - Fixed an old behavior where ActiveRecord didn't notify the session scope about sessions
43 that were invalidated due to database errors.
45 - Pushed processing of configuration into InPlaceConfigurationSource so both
46 ActiveRecord and ActiveRecordFacility could handle it in one place.
49 "XmlGenerationVisitor.MakeCustomTypeAtt doesn't support generic types"
51 - Applied Matthew Robinson's patch fixing AR-152
52 "Incorporation of subselect fetch strategy"
54 - Added the CompositeUserTypeAttribute and allowed the use of NHibernate's ICompositeUserType (AR-128)
56 - Applied the Marc-André's tests patch (AR-136).
58 - Applied Simon Laroche's patch fixing AR-141
59 "Support for NHibernate nested-composite-element"
61 - Fixed the Validation for Generic types (AR-122 and MR-237)
63 - Fixed working with Lazy objects.
65 Classes that are marked with [ActiveRecord(Lazy = true)] break in the EnsureInitialized function with the exception:
67 Castle.ActiveRecord.Framework.ActiveRecordException:
68 You have accessed an ActiveRecord class that wasn't properly initialized. The only explanation is that the call to ActiveRecordStarter.Initialize()
69 didn't include CProxyTypeCastle_ActiveRecord_Tests_ModelVeryLazyObjectModel_NHibernate_ProxyINHibernateProxy1 class
71 - Applied Andrew Denysenko's patch fixing AR-142
72 "Allow setting "batch-size" on collections"
74 - Applied Roy Tate's patch fixing AR-143
75 "XmlGenerationVisitor generates incomplete XML mapping
76 for BelongsTo with composite key"
78 - 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."
81 - Applying commutative patch from Roy Tate: AR-133, AR-139, AR-138
82 ActiveRecordMultiQuery, ActiveRecordCriteriaQuery, CriteriaHelper, CountQuery.
84 - AR-129: Applied patch by John Hurrell
85 "Implement NHibernate's "foreign-key" Attribute"
88 "BelongsTo attribute does not support UniqueKey"
90 - AR-135: Applied patch from Rafael Steil - better error message when using non interface type for an association.
92 - AR-134: Applied patch from Kristofer Goss. Can now use [Field] on [Nested] types.
94 - 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.
96 - Added RawXmlMappingAttribute base class, which can be used to give Active Record additional mapping from external source.
97 This functionality was added to support rare cases that Active Record do not support (mapping an entity from a 3rd party assembly, etc).
98 Prefer to use the standard Active Record features over this.
100 - Applied John Hurrell's patch fixing AR-94
101 "ScalarQuery<T> on an empty table creates a null reference exception"
103 - Applied Ernst Perpignand's fixing AR-126
104 "Collection of dependent objects"
106 Quoting 'patch implementing collection of dependent objects as per Hibernate documentation section 7.2'
109 "Cannot use webservices or XmlSerializer on classes derived from ActiveRecordValidationBase because of IDictionary PropertiesValidationErrorMessage"
111 - Applied Patrick Earl's patch, adding event ModelCreated that allows to re-configure the model before
112 generating the XML for NHibernate.
114 - Added HqlNamedQuery attribute and allowed to use the Import attribute at the assembly level
116 - Applied Brian Romanko's patch fixing AR-104
117 "IsUniqueValidator does not work properly with nullable primary keys"
119 - Add Count(ICriterion[] criteria) overrides to ActiveRecordMediator and ActiveRecordMediator.Generic (original patch from Andy W. Dobbels)
122 "Add support for the <Operation>AndFlush family of methods to ActiveRecordMediator"
124 - Applied Jan Persson's patch fixing AR-122
125 "Problems validating inherited properties when using generics"
127 - Applied Edward Kreis' patch fixing AR-124
128 "ActiveRecord OneToOne attribute's "constrained" parameter doesn't appears in a NHibernate mappings"
130 - Applied John Hurrell's patch fixing AR-123
131 "Additional OnFlush functionality"
133 - Exposed some IValidator's properties.
135 - Renamed IActiveRecordQuery.Target to IActiveRecordQuery.RootType
137 - Added SetRange to ProjectionQuery<,>
139 - Made HasMany a bit smarter when dealing with Map elements.
141 AR now can guess the IndexType, the MapType and the Table name from the IDictionary<,> property.
144 - AR-118 added NoSetter.LoweCase property access option.
146 - Fixed AR-117 "ActiveRecordBase CRUD Methods Ignore SessionScope FlushMode"
148 The operations Save, Create, Delete, Update will not flush the session anymore
149 The operations SaveAndFlush, CreateAndFlush, DeleteAndFlush, UpdateAndFlush will
151 - Removed HqlBasedQuery.Count operation as it didn't work for complex queries
153 - Fixed AR-110 "Support rollback on TransactionScope Dispose without commit."
155 Now you can create a TransactionScope defining the behavior
156 if the dispose is reached and neither a votecommit nor voterollback was called
158 - Applied Andrew Peters' (see AR-105) with the following changes
160 - [breaking change] Renames ActiveRecordBase.CountAll to ActiveRecordBase.Count
161 as several overloads are by criteria and IMHO Count is a better, more general name.
163 - Adds an overload of Count that accepts an ICriterion[] - Modified CountQuery
164 to use NHibernate 1.2 Projections
166 - Reimplements (http://support.castleproject.org//browse/AR-100) so that it uses
167 the new Count overload instead of FindAll.
169 - Filled in as many missing doc comments as I could before my eyes hurt :-)
171 - Renamed "criterias" to "criteria" in method signatures - "criterias" is not a word.
175 - Fixed AR-115 Exists always returns True for lazily-proxied classes
176 Changed FindByPK to use Get/Load according to its parameters.
178 - Included PrimaryKeyType.Custom and property CustomGenerator:Type
179 allowing one to supply its own generator
181 - Included PrimaryKeyType.Counter and PrimaryKeyType.Increment
183 - Applied patch from Drew Burlingame
184 Add ActiveRecordBase<T>.Exists(params ICriterion[] criterias)
185 Method also added to ActiveRecordBase.
187 - Applied patch by Andrew Peters fixing AR-97
188 "Pluralization of table names"
190 This patch introduces the pluralizeTableNames attribute on the configuration
191 which, if set to true, pluralizes the ActiveRecord types tables where no name
197 public class Student : ActiveRecordBase<Student>
199 The table name will be infered as 'Students'
202 - Applied patch by Ernst Naezer fixing AR-93
203 "Scaffolding / ARdatabind crash when Typeof is not supplied in the HasMany attribute."
205 - Applied Lee Henson's patch fixing AR-88
206 "Move GetFieldOrPropertyValue from ConfirmationValidator to AbstractValidator"
208 - Applied Lee Henson's patch fixing AR-86
209 "Expose DetachedCriteria on ActiveRecordBase<T>.SlicedFindAll"
211 - Fixed AR-84: ActiveRecord TransactionScope should export interface to set IsolationLevel
212 Now you can specify the isolation level when you create a TransactionScope
214 - Applied Carlos Ble's patch adding Replicate support to ActiveRecordBase
216 - Moved ProjectionQuery and ScalarProjectionQuery to Castle.ActiveRecord.Queries, with the rest of the queries.
218 - Added untyped projection support, using just ProjectionQuery<Post>, which uses object[] tuples.
220 - Added real projection support, which allows the following code:
221 ProjectionQuery<Post, PostTitleAndId> proj = new ProjectionQuery<Post, PostTitleAndId>(
222 Projections.Property("Title"), Projections.Property("Id"));
223 ICollection<PostTitleAndId> posts = proj.Execute();
224 foreach(PostTitleAndId titleAndId in posts)
226 PostsList.Add( new ListItem(titleAndId.Title, titleAndId.Id) );
230 - Renamed ProjectionQuery<T> ScalarProjectionQuery<T>, in preperation for real projections.
232 - Added DetachCrietia support in ARBase<T>, which allows integration with NQG, and in general enables taking advantage of the full criteria API.
233 Improved methods are FindOne, FindAll, FindFirst
235 - Move to used NHibernate 1.2 rev #2352
237 - Applied Josh Robb's patch adding a check for isWeb=true on the Session module.
239 - Returned to the default lazy false behavior.
241 - Will automatically initialize entities when loading outside of scope.
243 - Removed IModelNode since it was no longer of any value.
245 - Added XML Documentation to all public/ protected methods
247 - Moved to using NHibernate 1.2 beta 1
248 IEntityPersister instead of IClassPersister
249 I had some issues with Nullables.dll support, but mainly because the hard coded version number.
250 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.
252 I added type guessing to ISet<> (set), IList<> (bag), ICollection<> (bag), IDictionary<>(map)
254 The nicest new feature IMO is this:
256 ProjectionQuery<Blog, int> proj = new ProjectionQuery<Blog, int>(Projections.RowCount());
257 int rowCount = proj.Execute();
258 Assert.AreEqual(1, rowCount);
264 - Changed name of mapping files generated when isDebug=true. They now follow the NHibernate convention of name.hbm.xml
266 - Refactored: CompositeKey is not a class level attribute anymore
267 (minor breaking change)
272 public SomeClass Id { get/set }
277 public SomeClass Id { get/set }
280 - Added support for queries using the SQL language instead of HQL,
281 on classes derived from HqlBasedQuery (SimpleQuery, ScalarQuery, etc).
283 - Added ActiveRecordModel.GetModels(), which returns an array containing every registered ActiveRecordModel.
286 "Unique key on multiple columns"
288 Introduced UniqueKey on PropertyAttribute and FieldAttribute
290 - Introduced the following properties on PropertyAttribute and FieldAttribute:
297 "Allow users to specify autoImport"
299 Use the property UseAutoImport on ActiveRecordAttribute to control auto-import
301 - Resynched ActiveRecordAttribute with NHibernate <class> mapping. Added:
310 "Create property CustomPersister or Persister (Type) on ActiveRecordAttribute"
312 Added Persister property to ActiveRecordAttribute
314 - Applied Marc-André's patch fixing AR-79
315 "ValidateIsUnique not working with TransactionScope"
317 - Added XmlIgnore to IDictionary field on ARValidationBase
319 - Added support for generic abstract base class for a type hierarchy per discussions with Don
320 Morrison on IRC. The Generic Abstract Base class must conform to all the previous rules to
321 implement an abstract base class in a type hierarchy.
323 When initializing the class using the ActiveRecordStarter, you must use syntax similar to the
326 ActiveRecordStarter.Initialize( GetConfigSource(),
327 typeof(Model.GenericModel.Entity<>),
328 typeof(CompanyEntity),
329 typeof(PersonEntity));
331 Please see the GenericJoinedSubClassTestCase.cs for an example.
333 All rules about covariance and contravariance still apply.
335 - Applied Michael Morton's patch adding support to NHibernate's INamingStrategy.
336 This allow one to associate an implementation of INamingStrategy
337 through an attribute 'namingstrategytype' on activerecord config node
339 - Applied suggestion from Gokhan Altinoren fixing AR-77
340 "VisitPrimaryKey fails to generate correct <generator> xml
341 element for PrimaryKeyType.Identity when the system culture is set to Turkish"
343 - Applied Michael Morton's patch fixing AR-76
344 "SemanticVerifierVisitor Issue With NHibernate User Types"
346 - Refactored CompositeKey support. Now instead of using
349 public SomeClass Id { get/set }
352 public class SomeClass { ...
357 public SomeClass Id { get/set }
359 The old way is still supported though.
361 - Applied Freyr Magnússon's patch fixing AR-75
362 "SemanticVerifierVisitor causing fauly xml when using composit key"
364 - Added support for "ColumnPrefix" on [Nested] attribute. This change allows
365 a better usage of components, such as:
368 private String first, last;
370 [Property("first_name")] public string First { ... }
371 [Property("last_name")] public string Last { ... }
374 [ActiveRecord("children")]
376 private Name name, fatherName, motherName;
378 /* maps to database columns: first_name and last_name */
379 [Nested] Name Name { ... }
381 /* maps to database columns: father_first_name and father_last_name */
382 [Nested(ColumnPrefix="father_")] Name FatherName { ... }
384 /* maps to database columns: mother_first_name and mother_last_name */
385 [Nested(ColumnPrefix="mother_")] Name MotherName { ... }
388 - Review OneToOneAttribute test case, added one more unit test
390 - Removed OuterJoin attribute from OneToOneAttribute, replaced by Fetch property
392 - Added PropertyRef to OneToOneAttribute
394 - Applied patch to patch from josh robb - FindAllByProperty now handles null values internallly.
396 - Applied patch from josh robb - FindAllByProperty now handles null values internallly.
398 - Applied Freyr Magnússon's patch fixing misbehave related to abstract classes that defines different
399 database boundaries: "ActiveRecordStarter Initialize method assembply overloads fail
400 to add derived base types from config"
402 - Applied josh robb's patch "small fixup for length
403 validator error messages where there is only a minimum or maximum specified"
405 - Fixed AR-73: "Dynamic type adding after initialization"
407 - Added some logging. That's just a start: the idea is to increase AR verbosity
408 in order to reduce the need of debugging to diagnose problems.
410 - Refactored ActiveRecordStarter.Initialize to use ActiveRecordSectionHandler.Instance
412 - Introduced ActiveRecordSectionHandler.Instance to avoid repetitive code.
415 IConfiguration source = (IConfiguration) ConfigurationSettings.GetSection("activerecord");
417 (or similar) you can use
419 IConfiguration source = ActiveRecordSectionHandler.Instance;
421 Bare in mind that it looks for a section named "activerecord" on the configuration
422 file associated with the AppDomain, and throws an exception if it cannot be found.
424 - Applied Marc-Andre's patch fixing AR-68
425 "Make ActiveRecordValidation.ValidationErrorMessages virtual to simplify localisation"
427 - Added SessionScope.Current static property to gain access to the
428 current ISessionScope implementation
430 - Changed ISessionScope:
431 Added FlushAction property
432 Added Flush method to allow people to have more control on when to flush
434 - Applied patch by Michael Morton <mmorton@wickednite.com>. Quoting explanation:
436 Since the generic base class varies with the type parameter
437 (i.e. ActiveRecordBase<One> is not the same as ActiveRecordBase<Two>)
438 there is no easy way to specify multiple configurations using the
439 "type=" attribute. There is also no easy way to create multiple
440 subclasses as the documentation suggests for when using the non
443 However, there is an easy fix for this. Even though, for example,
444 these two base types are "different", ActiveRecordBase<One> and
445 ActiveRecordBase<Two>, they share the same generic type definition,
446 namely "ActiveRecordBase`1". With a small change to the function
447 "GetRootType" in "SessionFactoryHolder.cs" to make it look at the
448 generic type definition when dealing with a generic type, instead
449 of the generic type itself, you can once again easily access multiple databases.
452 You can now create multiple base types for each of your databases, such as...
454 class MyBaseOne<T> : ActiveRecordBase<T> { }
455 class MyBaseTwo<T> : ActiveRecordBase<T> { }
457 ... and then specify config for each by using the "type=" attribute like so ...
459 <config type="MyBaseOne`1, MyAssembly">
461 <config type="MyBaseTwo`1, MyAssembly">
464 Any subclasses of those will then get the correct configuration
465 settings. I have been using this change in my own builds for a
466 couple weeks now and it seems to be working ok. I have not
467 written any tests specifically for it, yet, but wanted to get
468 it out there in case anyone was interested.
470 - Applied patch by Brian Romanko <me@brianromanko.com> allowing the use
471 of different type for a Nested type (what NHibernate refers as a Component)
473 - Fixed AR-65: ActiveRecordBase<T> prevent users from using type inheritance
474 Refactored ActiveRecordBase<T> to extend ActiveRecordBase
475 Refactored ActiveRecordMediator<T> to extend ActiveRecordMediator
476 Could not do the same thing for the validation<T>
478 - Removed dependency on the Nullables library.
480 - Added native support for .NET 2.0 Nullables.
482 - Applied Brian Romanko <me@brianromanko.com> patch fixing enum support
484 - Fixed AR-62: DifferentDatabaseScope not switching between databases
486 - Introduced HybridWebThreadScopeInfo which, as the name implies,
487 uses both strategies to handle scope storage. Useful only for some complex scenarios
489 - Added support for RelationType.List.
491 - Simplified Exists<PkType> method on ActiveRecordBase<T>.
493 - Fixed AR-46 - OneToOne Attribute Does Not Support Specifying a Target Type
494 Added property MapType to OneToOne attribute
496 - Added ActiveRecordStarter.ResetInitializationFlag. Useful for test cases
497 that invoke Initialize multiple times
499 - Fixed AR-52 - Dont allow one to invoke Initialize more than once
501 - Added some flexibility into ActiveRecord Queries. They are now mutable,
502 which means we now have methods like 'SetParameter', 'SetParameterList' and
503 'SetRange'; and the 'Query' property is now read-write.
505 - Added support for query modifiers in ActiveRecord Queries. Any object implementing
506 IQueryModifier can be added to an ActiveRecordBaseQuery, using the
507 (protected) 'AddModifier' method. Parameters and query ranges
508 are implemented as query modifiers.
510 - Fixed AR-39: Added virtual to IsValid on ActiveRecordValidationBase/<T>
512 - Fixed AR-45: Added BindingFlags.NonPublic to DefaultBindingFlags on ActiveRecordModelBuilder
514 - Added Element to RelationAttribute, now can map relations of simple types
516 [HasMany(typeof(string), "ItemId", "Elements", Element = "Name")]
518 - Applied Antonio's patches
519 See http://forum.castleproject.org/posts/list/457.page and
520 http://forum.castleproject.org/posts/list/566.page
522 - Added Debug to IConfiguration Source. If set then XmlGenerationVisitor will save nhibernate mapping files to the AppDomain.BaseDirectory.
523 Usage: if you're the XmlConfigurationSource or the Section add the isDebug="true" attribute
525 - Added support to CompositeKeys as Foreign Keys (kudos to G. Richard Bellamy)
527 BelongsToAttribute - Added CompositeKeyColumns property.
528 HasAndBelongsToManyAttribute - Added CompositeKeyColumnKeys and CompositeKeyColumnRefs.
529 HasManyAttribute - Added CompositeKeyColumnKeys.
530 VersionAttribute - Added support for UnsavedValue.
531 SemanticVerifierVisitor - Added checks to ensure the composite key attributes are used properly.
532 XmlGenerationVisitor - Added output to support mapping the composite key attributes, as well as the unsaved-value attribute for Version.
534 In general, the changes are motivated by the need to have AR map to
535 legacy data, where composite keys are used as both primary and foreign
536 keys. The current AR support for CompositeKeys does not support
537 associations, this patch does.
539 There are some caveats when using this, which are driven by the NH
540 implementation. An assigned identifier (like all CompositeKeys and
541 many string PrimaryKeys) cannot be used to determine whether an instance
542 is detached or transient - since it's assigned by the application, it's
543 never null. Therefore, you must use another strategy, NH will misbehave
544 around the way it persists the instance to the database. That is why the
545 VersionAttribute had to have the support for UnsavedValue - the UnsavedValue
546 property of the Version is used by NH to determine the state of the instance.
548 For a discussion of the appropriate mappings and usage, see "Hibernate in Action," pgs. 330 - 335.
550 - Added SessionScopeWebModule which hooks BeginRequest and EndRequest initializing and
551 destructing a SessionScope properly. In order to use it add to httpModules section
556 <add name="ar.sessionscope" type="Castle.ActiveRecord.Framework.SessionScopeWebModule, Castle.ActiveRecord" />
560 - Added lifecycle methods that can be overriden:
567 - Applied patch from Ahmed Ghandour <aghandour@rydexinvestments.com> adding the methods
568 FetchCount and Exists to ActiveRecordBase
570 - Applied patch from Dave Godfrey fixing nested classes with relations problems (http://forum.castleproject.org/posts/list/457.page)
572 - Fixed a stack overflow exception when using IsUnique inside a session scope.
574 - You can now apply IsUnique to a property that also has PrimaryKey on it without problem.
576 - Resolved IsUnique bug with ActiveRecordValidationBase<> (it was non functional)
578 - Resolved test bugs with IsUnique for .net 1 and .net 2.
580 - Refactored query support:
581 - Introduced generic interface IActiveRecordQuery<T>, extending IActiveRecordQuery, for strongly-typed Execute() method support;
582 - Added IActiveRecordQuery.Enumerate(), for memory-intensive queries;
583 - Introduced HqlBasedQuery, decoupling ActiveRecordBaseQuery from HQL usage;
585 - Added ValidateCreditCard validation attribute.
587 - Added ValidateLength validation attribute.
589 - Added support for .Net 2.0 Connection Strings in the config file, using this method:
592 <add key="hibernate.connection.connection_string" value="ConnectionString = ${ConnectionStringKey}" />
596 <add name="ConnectionStringKey" connectionString="The Connection String"/>
599 This allows to take advantage of the connection string encryption as well as manage them using the built in tools.
601 - Added Exists<PkType>(PkType id) support to allow for checking of an object's existance
604 - Brought ActiveRecordBase.Generic inline with ActiveRecordBase feature wise.
605 Public Static Methods are now present on all ActiveRecordBase.Generic objects for common tasks such as Find, FindAll, etc.
607 <This is a breaking change.>
609 - Added support for NHibernate dynamic-update, dynamic-insert to ActiveRecordAttribute
611 - Simplified NHibernate markup generation for testing
613 Attributes are now written in one of two ways. Tags that have both an open and close
614 will have no space at the end of the attributes on the opening tag, while tags that
615 have no contents (<tag />) will be written with one space after the last attribute.
619 <openclose attrib="test" attrib2="test"></openclose>
621 <noclosetag attrib="test"/>
623 - Added ActiveRecordValidationBase<> to support validation on Generic AR classes
625 - Updated DeleteAll(Type targetType, IEnumerable pkValues) to support non int primary keys
627 - Add more hookable methods.
629 - Refactored Validation support to use NHibernate.IValidatable
631 - Brought ActiveRecordMediator.Generic inline with ActiveRecordMediator. This is a breaking
632 change (removal of a few methods/renaming of a few existing).
634 - Add import support (kudos to Dan Burnea)
635 [ActiveRecord, Import(typeof(ImportClassRow), "ImportClassRow")]
636 public class ImportClass : ActiveRecordBase
641 - Added FindAllByProperty, FindFirst and FindOne
643 - Added DeleteAll(type, where) (kudos to G. Richard Bellamy)
645 - Applied patch from Josh Robb. Added support for hooks on ActiveRecordBase<T>.
647 - DifferentDatabaseScope: so you can open a session using a different dbconnection
648 and persist your object model. Very experimental version
650 - Fixed: Support for multiple databases was completely broken.
652 - An implementation of ISessionFactoryHolder can be specified through the configuration, attribute sessionfactoryholdertype
655 - Added: ActiveRecordBase<T> - a generic form a ActiveRecordBase which relieves the need to re-write
656 all the base static methods to hide the type parameter and cast the result. Generics do it for you.
658 - Added: ActiveRecordStarter.CreateSchemaFromFile(filename) as an alternative to CreateSchema.
660 - Added: Support for composite keys - composite key class must be serializable and implement both Equals and GetHashCode.
661 Not complete support, missing the NHibernate key-many-to-one element in the composite key.
663 - Added: Support for Lazy loading class using BelongsTo. Will throw if there is a non virtual property that
666 - Closed: (AR-24) ValidationException must contain the validation error messages
668 - Support for fields in addition to properties
670 - Added [Any], [Any.MetaValue] and [HasManyToAny] attributes.
672 - Small improvement on ActiveRecordModelBuilder (less intensive on IsDefined/GetCustomAttribute)
674 - IThreadScopeInfo introduced. Two implementations: ThreadScopeInfo and WebThreadScopeInfo.
675 ThreadScopeInfo is the default implementation. You can use WebThreadScopeInfo by simply using
676 isWeb="true" on the configuration node:
678 <config isWeb="true">
681 Or you can provide your own implementation specifying the full type name
683 <config threadinfotype="my.threadinfotype, my.assembly">
689 - Transaction support: lots of minor fixes
691 - Added support for map relations.
692 Necessary to specify Index and IndexType on the HasMany (or HasAndBelongsToMany)
694 - IsUnique validator fix
700 Inner workings fully rewritten, better test cases coverage
708 Implemented support for Joined Subclasses
710 Implemented initial support for validations
716 Applied patch from John Morales (support for idbags)
722 Applied patch from John Morales (support for sets)
724 Applied suggestion and fixes from "jianxiao jiang" <jiangjianxiao@gmail.com> (NHibernateDelegate)
730 Applied patch from Luiz César Kuriki <luizck@gmail.com> in order to support NHibernate's Component feature
732 Applied modification suggested by Andrew Hallock and Craig Neuwirt in order to support HasOne relations.
738 Released (not changes to track yet)