News about Retina.NET v1.0.0.7

Tags: ORM, Retina.NET

Well, I have not posted anything from quite some time....   but I'm still alive, and here is the post to prove it!

I'm finishing things up to publish the new Retina.NET version. The code is complete, so I'm still running some tests, making sure all DataStores works as expected, and updating the documentation.

For those who can't wait, I post here the list of changes for this version, and they are quite a few:

  • 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.

That's a lot of work, I'm very happy about the progress Retina.NET is getting.

For the next versions I'm planning to include the long overdue Entity Caching mechanism, and later the XML mapping configuration.

With those features in place, I will call Retina.NET version 1.0 finished, and I will start to work on Retina.NET v2.0 using .NET 2.0.

Best Regards,

Andrés G Vettori
MCSE/MCSD/MCT
Leader of the C# Community of the
Microsoft Users Group Argentina

No Comments