Thursday, November 6, 2008

Switch to the persistency framework Data Objects.NET 4.0

Long time ago I've decided to use DataObjects.NET as ORM framework. The content management of our company homepage www.mse-it.de relies soley on it. It also uses some JQuery plugins for layouting. You can find them on my private homepage under JQuery Projects.

A view months ago they announced the new 4.0 version. It is licenced under GPL and comes along with some propertiary licence models. It is a awesome framework, with goundbreaking changes to any ORM i know.

But i miss some important things:
  • Syncronsiation or replication like SQL - but on the level of business objects
  • Update and upgrade support
  • Backup and resorte support
So i've decided to use syncronsation and distribution knowledge from our software for travel agencies (comes with replication, backup update and so on) and build a framework for it that is able to:
  • Syncronize
  • Backup
  • Deploy
In the moment i am working on syncronisation and update issues. Because x-tensive follows the "sorce code is source of everything" (SCSE) pattern, i will do too.

Here is a sample class form my NUnit tests:


[Sync]
class TestEntity : SyncEntity
{
[Field]
[RevAdd(Rev.B_0_1)]
public string Payload { get; set; }

[Field]
[RevAdd(Rev.B_0_1)]
[RevRenamed("FieldNoSync",Rev.B_0_1)]
[SyncVersionNoUpdate]
public string FieldWithSyncVersionNoUpdate { get; set; }

public string NoFieldProperty
{
get { return ""; }
set {}
}
}

The RevXXX (Revision) attributes will tell the framework when a property is introduced, deleted or the name changed. So the backup and synchronization layer can automatically do the necessary transformations between the versions.

1 comment:

Alex Yakunin said...

Thomas, if we could discuss possible ways of joining the efforts here, I'd be glad. We're planning to start working on schema upgrade in the end of November \ December now, and actually already did a significant part of this in SqlDom. If there is a common vision, it could help both sides.

Please skype me (Skype: alexyakunin) when the time will permit.