----- Original Message ----- From: "Alexis Agahi" <[EMAIL PROTECTED]>
> For me a compenent is an object like any other, except it features lifecycle > interfaces. So I'm trying to imagine if a component could handle persistence > lifecycle interface. Do you want some messages like "store" and "load" managed by some external entity (component)? Then that can be done by a additional extension, but I don't know why this should be done this way. Niclas see a persistence engine as a different component and I see components that can handle their own persistence transparently. I strongly advise you to support persistence that can be plugged in and off, so please check http://www.prevayler.org/ Few months ago I worked in a simple business model (using avalon) whose business objects implemented IBusinessObject that exposed save/remove. These methods ask for their PersistenceManager (as Niclas commented). So, for Unit testing we could use prevayler, but in our real solution we used a common rdbms. [AvalonService( typeof(IEntity) )] [AvalonComponent( "entity", Lifestyle.Transient )] [AvalonDependency( typeof(IEntityPersistence), "Persistence", Optional.False )] public class Entity : AbstractBusinessObject, IEntity, ILookupEnabled { <....> /// <summary> /// Saves this object against the storage. /// <seealso cref="Keldor.Common.Entity.Persistence.IEntityPersistence"/> /// </summary> public override void Save() { IEntityPersistence persistence = (IEntityPersistence) _manager["Persistence"]; persistence.Save(this); } /// <summary> /// Removes this object from the storage. /// <seealso cref="Keldor.Common.Entity.Persistence.IEntityPersistence"/> /// </summary> public override void Remove() { IEntityPersistence persistence = (IEntityPersistence) _manager["Persistence"]; persistence.Remove(this); } } Regards, hammett --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]