O/R Mapper - Retina.NET - Object Persistence Framework for .NET Applications

I am a big fan of O/R Mappers and Code Generation Tools to help me be more productive in my day-to-day programming.

There are a lot of affordable O/R Mappers, such as WilsonORMapper, Codus, LLBLGen Pro, NHibernate, etc. that you can use to as a solid solution for your Data Layer in your ASP.NET Web Applications.  Not only do they enhance productivity, but they also come with source code that can help you understand the design patterns for implementing O/R Mapping.

Retina.NET ( http://workspaces.gotdotnet.com/retina ) is another free O/R Mapper that you can use in your application.  Similar to DLinq and Gentle.NET, it currently uses attributes to map business class fields for persistance to database table columns.  Andres, the developer of the tool, is about to come out with a new version that has the following new features:

  • Added a "LoggingManager" class to manage all logging done by Retina.NET, even publishing of log events to subscribers for centralized logging using the application logging policy.
  • Removed Log4net and WSE2 references from Retina.Core.
  • StringDataType now explicitely supports UNICODE and TEXT strings. This properties aren't anymore derived from length or other property.
  • BETWEEN Criteria now works correctly, and parsing string BETWEEN criteria is also supported. The sintax supported is: "[Id] Between 0 To 1".
  • Added support for concurrency control using optimistic locking using entity fields or timestamp.
  • Added an EntityReader reader object, and RetrieveReader methods to Broker and ObjectContext class.
  • Added a CustomDataType for serialization of custom data into IMAGE database fields.
  • GuidDataType, TimeDataType and BinaryDataType now supports NULL values.
  • Added the "InTransaction" property to IDataStoreBroker interface.

  • The DataStoreBroker implementations now allow issuing nested transactions, and they are treated as the root transaction.
  • Added an Entity Factory attribute for TypeStorage attribute. It allows entity objects to be constructed without using reflection.
  • Added an Entity Field Accesor attribute for TypeStorage attribute. It allows that entity fields to be get/set without the need of using reflection.
  • Changed StringDataType to not allow null values. Added a empty constructor.
  • Changed NullableStringDataType to add some additional constructors.
  • Fixed the "NonPersistent" property of the "FieldStorage" attribute.
  • Fixed ROWGUID column definition for MsSql DataStore.
  • Added the "IgnoreMember" property to "FieldStorage" attribute.
  • Modified class "ChildCollection" to better support for proxy classes (lazy load).
  • Added support for Entity WebForms.
  • Fixed IsDirty on ChildEntities. Changed ChildEntities were not detected and not saved.
  • Added PersistencePolicy enum to TypeStorage attribute.
  • Changed the default PersistencePolicy from AllPublic to None.
  • Changed maximum depth level for retrieval of Lazy Load reference child entities.  Before, only 1 level depth for reference child entities were allowed.
  • Added support for Storage generated identity and rowguid primary keys.
  • Changed the "Null pattern" for constraints. They now return a BrokenConstraint or HeldConstraint objects.
  • Created a ConstraintManager class to centrally manage, log and ignore Constraints.
  • Added "Validate" method to ObjectContext and DataStoreBroker classes.
  • Child entities can now be declared without the need for the parent entity to define a field to contain the child id.
  • Paging of results from Criteria objects.

I can't wait to dig into the new version of his source code as well as try it out in a small web application.

Drinking: Sencha Green Tea

posted on Saturday, October 22, 2005 9:57 PM

Main

News

Green Tea

.NET Development

Enterprise Library

Patterns & Practices