Herramientas de usuario

Herramientas del sitio


db:db4o

¡Esta es una revisión vieja del documento!


db4objects

Estructura

Con .NET

Una vez instalado en C:\Archivos de programa\Db4objects\db4o-7.8\bin tendremos localizadas las distintas librerías, por ejemplo, la necesaria para utilizar db4o en programas de escritorio es C:\Archivos de programa\Db4objects\db4o-7.8\bin\net-3.5\Db4objects.Db4o.dll.

En Ubuntu puedes conseguir db4o desde el repositorio oficial.

First glance

Primero deberemos incluir la referencia a Db4objects.Db4o y los namespaces necesarios para acceder a las clases que utilizaremos:

using Db4objects.Db4o;

Abrir base de datos

Para abrir una base de datos deberemos llamar al método estático OpenFile de la clase Db4oFactory pasandole la ruta del archivo de DB con el que vayamos a trabajar. Esto devolverá un IObjectContainer que representará a la base de datos.
El método Close del IObjectContainer cerrará la DB.

IObjectContainer db = Db4oFactory.OpenFile(@"c:\prueba.db");
try {
  // Operaciones con la base de datos
}
finally {
  db.Close();
}

Versión 6.0 en Mono

La versión 6.0 es una versión accesible con las versiones actuales de Mono (21 de febrero de 2010), sobre ella puede utilizarse LINQ y es perfectamente usable. Aún así no utilices un ObjectManager de una versión superior sobre una DB de esta versión porque la corromperá.

Queries

Recoger todos los elementos de un tipo

Para ello lo haremos con el método Get del IObjectContainer, pudiendo hacerlo de dos formas:

  1. Pasándole el tipo del que queremos todos los elementos mediante el typeof.
  2. Pasándole un objeto vacío del tipo que buscamos.
// Forma 1:
IObjectSet result = db.Get(typeof(Car));
foreach (var b in result)
    Console.WriteLine(((Car)b).marca);
// Forma 2:
IObjectSet result = db.Get(new Car () { marca = null });

Filtrar elementos

Para lanzar la consulta simplemente llamaríamos al Get sólo asignando la propiedad por la que queremos buscar:

IObjectSet result = db.Get(new Pilot () { Name = "Pedro" });

Queries con LINQ

Aunque las versiones anteriores de Mono tienen un uso bastante precario de LINQ este sí que puede ser aprovechado para las consultas a una base de datos db4o.
La siguiente query busca el nombre de los pilotos con un mini ordenando el resultado por el número de coches que estos tienen:

var result = from p in db.Query<Pilot>()
             from c in p.lCars
             where (c.marca == "MINI")
             orderby p.lCars.Count
             select p;
foreach (var r in result)
    System.Console.WriteLine(r.name);

Acciones básicas

Insertar

Actualizar

Eliminar

db/db4o.1266771288.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)