Accessing db4o meta-information

Db4o provides an access to the database meta-information through its extended object container interface (ExtObjectContainer(Java)/IExtObjectContainer(.NET)).

Within the object database meta-schema is represented by classes and their fields. To access their meta-information db4o provides special interfaces:

The following ExtObjectContainer methods give you access to the StoredClass.

c#: IExtObjectContainer#StoredClass(typeof(Foo))

VB: IExtObjectContainer#StoredClass(GetType(Foo))

returns StoredClass for the specified clazz, which can be specified as:

c#: IExtObjectContainer#StoredClasses()

VB: IExtObjectContainer#StoredClasses()

returns an array of all StoredClass meta-information objects.

MetaInfoExample.cs: SetObjects
01private static void SetObjects() 02 { 03 File.Delete(Db4oFileName); 04 IObjectContainer container = Db4oFactory.OpenFile(Db4oFileName); 05 try 06 { 07 Car car = new Car("BMW", new Pilot("Rubens Barrichello")); 08 container.Set(car); 09 car = new Car("Ferrari", new Pilot("Michael Schumacher")); 10 container.Set(car); 11 } 12 finally 13 { 14 container.Close(); 15 } 16 }
MetaInfoExample.vb: SetObjects
01Private Shared Sub SetObjects() 02 File.Delete(Db4oFileName) 03 Dim container As IObjectContainer = Db4oFactory.OpenFile(Db4oFileName) 04 Try 05 Dim car As Car = New Car("BMW", New Pilot("Rubens Barrichello")) 06 container.Set(car) 07 car = New Car("Ferrari", New Pilot("Michael Schumacher")) 08 container.Set(car) 09 Finally 10 container.Close() 11 End Try 12 End Sub
MetaInfoExample.cs: GetMetaObjects
01private static void GetMetaObjects() 02 { 03 IObjectContainer container = Db4oFactory.OpenFile(Db4oFileName); 04 try 05 { 06 System.Console.WriteLine("Retrieve meta information for class: "); 07 IStoredClass sc = container.Ext().StoredClass(typeof(Car)); 08 System.Console.WriteLine("Stored class: "+ sc.ToString()); 09 10 System.Console.WriteLine("Retrieve meta information for all classes in database: "); 11 IStoredClass[] sclasses = container.Ext().StoredClasses(); 12 foreach (IStoredClass sclass in sclasses) 13 { 14 System.Console.WriteLine(sclass.GetName()); 15 } 16 } 17 finally 18 { 19 container.Close(); 20 } 21 }
MetaInfoExample.vb: GetMetaObjects
01Private Shared Sub GetMetaObjects() 02 Dim container As IObjectContainer = Db4oFactory.OpenFile(Db4oFileName) 03 Try 04 System.Console.WriteLine("Retrieve meta information for class: ") 05 Dim sc As IStoredClass = container.Ext().StoredClass(GetType(Car)) 06 System.Console.WriteLine("Stored class: " + sc.GetName()) 07 08 System.Console.WriteLine("Retrieve meta information for all classes in database: ") 09 Dim sclasses() As IStoredClass = container.Ext().StoredClasses() 10 Dim sclass As IStoredClass 11 For Each sclass In sclasses 12 System.Console.WriteLine(sclass.GetName()) 13 Next 14 Finally 15 container.Close() 16 End Try 17 End Sub