You are here: Basics Operations & Concepts > Update Concept > Transparent Persistence > Car

Car

Car.cs
/** Copyright (C) 2004 - 2008 Versant Inc. http://www.db4o.com */
using System;
using Db4objects.Db4o.TA;
using Db4objects.Db4o.Activation;

namespace Db4objects.Db4odoc.TP.Rollback
 {
    public class Car : IActivatable
     {
        private string _model;
        private Pilot _pilot;
        /**//*activator registered for this class*/
        [System.NonSerialized]
        public IActivator _activator;


        public Car(string model, Pilot pilot)
         {
            _model = model;
            _pilot = pilot;
        }
        // end Car

        /**//*Bind the class to the specified object container, create the activator*/
        public void Bind(IActivator activator)
         {
            if (_activator == activator)
             {
                return;
            }
            if (activator != null && null != _activator)
             {
                throw new System.InvalidOperationException();
            }
            _activator = activator;
        }
        // end Bind

        public void Activate(ActivationPurpose purpose)
         {
            if (_activator == null)
                return;
            _activator.Activate(purpose);
        }
        // end Activate

        public string Model
         {
            get 
             {
                Activate(ActivationPurpose.Read);
                return _model;
            }
            set
             {
                Activate(ActivationPurpose.Write);
                _model = value;
            }
        }

        public Pilot Pilot
         {
            get
             {
                Activate(ActivationPurpose.Read);
                return _pilot;
            }
            set
             {
                Activate(ActivationPurpose.Write);
                _pilot = value;
            }
        }

        public void ChangePilot(String name, int id)
         {
            _pilot.Name = name;
            _pilot.Id.Change(id);
        }

        override public string ToString()
         {
            Activate(ActivationPurpose.Read);
            return string.Format("{0}[{1}]", _model, _pilot);
        }
        // end ToString
    }
}

Car.vb
' Copyright (C) 2004 - 2008 Versant Inc. http://www.db4o.com 

Imports System
Imports Db4objects.Db4o
Imports Db4objects.Db4o.TA
Imports Db4objects.Db4o.Activation

Namespace Db4objects.Db4odoc.TP.Rollback
    Public Class Car
        Implements IActivatable
        Private _model As String
        Private _pilot As Pilot
        'activator registered for this class

        <Transient()> _
        Public _activator As IActivator


        Public Sub New(ByVal model As String, ByVal pilot As Pilot)
            _model = model
            _pilot = pilot
        End Sub
        ' end Car

        'Bind the class to the specified object container, create the activator

        Public Sub Bind(ByVal activator As IActivator) Implements IActivatable.Bind
            If _activator Is activator Then
                Return
            End If
            If activator IsNot Nothing AndAlso _activator IsNot Nothing Then
                Throw New System.InvalidOperationException()
            End If
            _activator = activator
        End Sub
        ' end Bind

        Public Sub Activate(ByVal purpose As ActivationPurpose) _ 
Implements IActivatable.Activate
            If _activator Is Nothing Then
                Return
            End If
            _activator.Activate(purpose)
        End Sub
        ' end Activate

        Public Property Model() As String
            Get
                Activate(ActivationPurpose.Read)
                Return _model
            End Get
            Set(ByVal value As String)
                Activate(ActivationPurpose.Write)
                _model = value
            End Set
        End Property

        Public Property Pilot() As Pilot
            Get
                Activate(ActivationPurpose.Read)
                Return _pilot
            End Get
            Set(ByVal value As Pilot)
                Activate(ActivationPurpose.Write)
                _pilot = value
            End Set
        End Property

        Public Sub ChangePilot(ByVal name As String, ByVal id As Integer)
            _pilot.Name = name
            _pilot.Id.Change(id)
        End Sub

        Public Overloads Overrides Function ToString() As String
            Activate(ActivationPurpose.Read)
            Return String.Format("{0}[{1}]", _model, _pilot)
        End Function
        ' end ToString
    End Class
End Namespace

Download example code:

VB.NET c#