Search     Login     Register    

Download Documentation Tools News

Community Forum Bugs Requests


Download

Download the latest version of NPersist from the GotDotNet workspace at:

http://workspaces.gotdotnet.com/npersist

Or from the mirror (direct download) at:

NPersist v1.0.8 Full Source Code:
http://compona.com/npersist/npersist-1.0.8.zip

NPersist v1.0.7 Full Source Code:
http://compona.com/npersist/npersist-1.0.7.zip

NPersist v1.0.6 Full Source Code:
http://compona.com/npersist/npersist-1.0.6.zip

Thanks to Compona for sponsoring with this mirror!

NPersist is distributed under the
GNU Lesser General Public License 2.1 (LGPL)

(Note: This is the milder form of the GPL license which does not force you to open source the stuff you write that uses NPersist)

Update History:

v1.0.8 ===========================================

* New "Omega" NPath engine replaces old "Alpha" Engine

- Single join path tree in sql generated by npath

- Left outer joins generated when traversing nullable columns in spans

- Support for functions

- Improved span loading

- Parameterized queries

* New ObjectQueryEnine evaluates NPath queries on lists of objects in memory

- Filters a supplied list of objects or all objects in cache

* New IContext.FilterObjects() Method

- FilterObjects(npath, type, objects) filters the passed in list of objects

- FilterObjects(npath, type) filters the objects in cache

- FilterObjects(npath, type, merginBehavior) begins by querying the database and then continues by querying the cache, merging the results.

* New OverLoads on IContext.GetObjects() method

* New constructors on Context allow using embedded xml mapping files

* Performance optimizations on object management

-Additional caching is used to speed up retreival of Object and Property Status

-Additional caching is used in the DomainMap (using the IMap.Fixate() method)

* New IContext.GetDataTable() method returns results in form of DataTable

* UnitOfWork updated to handle inserts with cyclic references

* All generated Sql queries are parameterized

* New IContext.AutoTransactions property (default = True)

- When true, a local transaction will automatically be used whenever a call to context.PersistAll() is made, if the domain maps to only one database and if the user has not already manuall started a pending transaction with context.BeginTransaction()

* Added OnBefore- and OnAfter- events for Begin-, Commit- and RollbackTransaction

* Added ILogger interface and Logger base class for logging

* Reworked Observer system, making the ObservingAttribute obsolete

- context.AddObserver(observer) - adds observer observing context and all objects

- context.AddObserver(observer, type) - adds observer observing all objects of given type

- context.AddObserver(observer, obj) - adds observer observing object

- context.AddObserver(observer, params object[]) - adds observer observing given objects and types

- context.AddObserver(observer, observerTarget) - adds observer observing all objects, the context or both



v1.0.7 ===========================================

* New runtime subclassing of lists by Roger Johansson - Including support for typed lists

* Both sides of bi-directional properties are now read-write (though one side should still be marked as read-only in the xml mapping file)

* Old inverse manager changes name to OnPersistInverseManager (this manager uses the strategy of synching after persist)

* New OnWriteInverseManager - becomes default inverse manager (this manager uses the strategy of synching directly on write)

* The old InverseManager class becomes a broker between the two classes

* Select which inverse manager to use by setting the new Context.InverseManager.InverseManagerType property.

* ManagedList changes name to InterceptableList (ManagedList is still there, and inherits from InterceptableList, so your old code will work, but ManagedList becomes obsolete without error)

* New IInterceptableList interface

Note: For the new features to work, you must leave your list properties empty (not create an instance of a list class for them as default value) since NPersist wants to create all list class instances in your list properties. As of v1.0.7, NPersist will fill all your list properties with InterceptableLists.

That is, declare your list member variables as:

private IList m_Employees;

not

private IList m_Employees = new ArrayList;



v1.0.6 ===========================================

* Translated the whole thing to C#

* POCO support with runtime subclassing, thanks to Roger Johansson!

* Added new overload CreateObject(id, type) method that returns new instance (required to use this instead of old CreateObject(obj) for POCO)

* Added new assembly-name attribute to domain and class elements in xml file (required if the name of your assembly is different from the name of your domain)

* Changed name from IContextManager and ContextManager to just IContext and Context (the old ones still exist but are marked as obsolete (with no error), and just inherit from IContext and Context)

* IContextHolder and ContextHolder are now obsolete with error They are not needed anymore with the new POCO support but if you want to do what you did with these before, use the new IInterceptable and Interceptable instead

* Added IContextFactory and ContextFacory interface/class

* Moved ValidationManager from a property in context to a property in the EventManager

* Added IObjectFactory and ObjectFactory

* Added IInterceptor and Interceptor classes

* Added IContextManager.GetConnectionString() and SetConnectionString() methods

* Added IContextManager.TryGetObject() method

* Added IContextManager.TryGetObjectByKey() method

* Added IContextFactory interface and ContextFactory base class

* Added IPersistenceEngine interface

* Fixed NPath so that:

- It now allows quotes in strings, ex:

"Select * from Employee where name = 'O''Neal'"

- It now handles strings that match reserved words, ex:

"Select * from Employee where name = 'Select'"



v1.0.5 ===========================================

* Added ITransaction interface and Transaction class for local transactions

* Added IContextManager.BeginTransaction() method for starting local transactions

* Added TransactionException exception.

* Added IContextManager.GetDataSource() method

* Added IContextManager.GetSourceMap() method

* Added meta-data tags to new xml format

* Added IContextManager.ExecuteScalar() method (accepts NPathQuery or SqlQuery objects)

* Added NPath support for loading spans

* Added NPath support for ¤ character (like * but loads reference properties as well)

* Added NPath support for Count(), Avg(), Min() and Max() scalar queries

* Added NPath support for multiple Order By columns, each with their own asc/desc specifier

* Added AssemblyName property to IDomainMap and IClassMap

* Bug in cascading delete fixed

* Bug in lazy loading of one-to-one reference properties fixed



v1.0.4 ===========================================

* Added new XML mapping file schema draft

* Added IMapSerializer interface and MapSerializerBase base class for custom mapping file serializers/deserializers

* Added MapSerializerDefault

* Added MapSerializerEnum enumeration

0 = DefaultSerializer
1 = DotNetSerializer
2 = CustomSerializer

* Added new ContextManager constructor overload taking custom MapSerializer

* Added IPropertyMap.OrderBy property (for collection properties)

* Added support for navigating over ManyOne and ManyMany relationships in NPath

* Added support for non-primary properties in NPath

* Added IMap.DeepCopy method

* Added IMap.DeepCompare method

* Added IMap.DeepMerge method

* Added IDomainMap.FieldNameStrategy property

* Added FieldNameStrategyEnum enumeration (None, CamelCalse, PascalCase)

* Added IContextManager.GetCOnnection() and SetConnection() methods

* Added ISqlExecutor.ReaderToDataTable() method

* Several bug fixes for non-primary properties

* ISqlExecutor.QueryLog property removed.



v1.0.3 ===========================================

* Implementing IObjectHelper in domain objects is now optional

* Added IValidatable interface with Validate() method

* Added IObservable interface with AddObserver() and GetObservers() methods

* Added Observable base class implementing IObservable

* Added IEventManager.AddObserver() method

* Added IEventManager.GetObservers() method

* Added IContextManager.AddObserver() method (delegates)

* Added IContextManager.GetObservers() method (delegates)

* Added ObservingAttribute attribute

* Added IContextManager.ValidationManager property

* Added IValidationManager with following properties:

ValidateOnPersistAll (True Default)
ValidateOnPersist
ValidateOnCreate
ValidateOnDelete
ValidateOnGet
ValidateOnUpdate
ValidateOnInsert
ValidateOnRemove
ValidateOnLoad
ValidateOnPropertyGet
ValidateOnPropertySet
ValidateOnPropertyLoadSet

(Before and After versions of each property)

* Added ValidationException exception

* Added IUnitOfWork.GetCreatedObjects() method

* Added IUnitOfWork.GetDeletedObjects() method

* Added IUnitOfWork.GetDirtyObjects() method

* Deleted pointless EventListener base class

* Added UpdateOptimisticConcurrentBehavior and DeleteOptimisticConcurrentBehavior settings to:

-IPersistenceManager, IDomainMap, IClassMap, IPropertyMap

* Changed OptimisticConcurrencyBehaviorEnum to:

DefaultBehavior = 0, IncludeWhenDirty = 1, IncludeWhenLoaded = 2, Disabled = 3

* Added PropertySpecialBehaviorEnum: None = 0, Increase = 1, SetDateTime = 2

* Added OnCreateBehavior and OnPersistBehavior properties to IPropertyMap (taking PropertySpecialBehaviorEnum values)

* Added new RowNotInsertedException exception class



v1.0.2 ===========================================

* Fixed bug in generated "Select lazy loaded property" sql query

* Fixed bug in ClassMap.IsInheritedProperty() method

* Fixed bug in CascadingCreate feature

* Added new IColumnMap.ForeignKeyName property for grouping foreign keys.

* Optimistic Concurrency can now be switched off via a new property:

IPersistenceManager.OptimisticConcurrencyBehavior

* Improved CascadingCreate to work for read-only properties

* Improved CascadingCreate to work for collection properties

* Improved CascadingCreate to update both sides of bi-directional relationship directly (without waiting for the InverseManager to do it after PersistAll())

* Improved Delete feature to do "sorted deletes" (deleting objects in an order that respects constraints and optimizes performance)

* Class table inheritance now works

* All non-primary properties in a table are now loaded together.

* Added IsShadowingProperty() method to IClassMap interface

* Added following mapping properties that are useful only for code generators

- IDomainMap.InheritsTransientClass
- IDomainMap.ImplementsInterfaces
- IDomainMap.ImportsNamespaces

- IClassMap.InheritsTransientClass
- IClassMap.ImplementsInterfaces
- IClassMap.ImportsNamespaces



v1.0.1 ===========================================

* Added DeepClone() method for all map objects

* Fixed bug in generated sql "Insert" statement for MS access db.

* Fixed small bug in property mapping verification (did not check for null reference)

* Added overloaded version of ContextManager.GetObject() that takes identity parameter of System.Object type (converts to string internally)

* Added overloaded version of ContextManager.GetObject() that takes query and merging type

* Added new base exception NPersistException

* Added new ObjectNotFoundException

* Added new PropertyNotFoundException

* Added new MultipleObjectsFoundException (for new GetObject() method)

* Added new DeletedObjectException

* Added new NPathException

* Added new IdentityNotConvertibleToStringException

* Added new FailedFetchingDbGeneratedValueException

* Added new MissingInterfaceException

* Added new MissingAttributeException

* Added new UnitOfWorkException



v1.0.0 ===========================================

* Moves from Pragmatier namespace to MatsSoft namespace

* PPath changes name to NPath

* Built-in support for the Borland Data Provider

* Support for dynamic loading of custom data providers

* New Property: ISourceMap.ProviderAssemblyPath

* New Property: ISourceMap.ProviderConnectionTypeName

* New Property: IContextManager.AssemblyManager

* New interface: IAssemblyManager

* New class: AssemblyManager

* New IContextManager.GetObjects(IQuery, Type) Method

* New IQuery Interface

* New classes: QueryBase, SqlQuery, PPathQuery Just click - casino games for mobile to risk . Gary tells me about cheap dedicated servers -it's easy . alldeals

Copyright © Mats Helander 2004 | MatsSoft