Herramientas de usuario

Herramientas del sitio


db:db4o

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
db:db4o [2010/02/21 17:15]
alfred
db:db4o [2020/05/09 09:25] (actual)
Línea 44: Línea 44:
   * {{db:​db4o:​db4o-6.0.rar|Binarios}}   * {{db:​db4o:​db4o-6.0.rar|Binarios}}
   * {{db:​db4o:​objectmanager-_6.4-java.zip|ObjectManager}}   * {{db:​db4o:​objectmanager-_6.4-java.zip|ObjectManager}}
 +
 +
 +
 +
 +
  
  
Línea 71: Línea 76:
 IObjectSet result = db.Get(new Pilot () { Name = "​Pedro"​ }); IObjectSet result = db.Get(new Pilot () { Name = "​Pedro"​ });
 </​code>​ </​code>​
 +=== Utilizando el método Query (Native Query) ===
 +Podemos utilizar el método ''​Query''​ que requiere de un delegado que reciba por parámetro el tipo de elemento consultado y que devuelva un bool, de esa forma internamente se va llamando a este por cada elemento y se comprueba lo deseado.
 +<code csharp>
 +public IList<​Pilot>​ GetThePilot (Pilot templatePilot)
 +{
 +    IList<​Pilot>​ pilots = db.Query<​Pilot>​ ( 
 +        delegate(Pilot match)
 +        {
 +            return ((match.name == templatePilot.name) && (match.id == templatePilot.id))
 +        } );
 +    return pilots;
 +}
 +</​code>​
 +
 === Queries con LINQ === === 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.  \\  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.  \\ 
Línea 84: Línea 103:
 </​code>​ </​code>​
  
- +=== Notas === 
- +  * Para tipar el resultado: 
 +<code csharp>​ 
 +var template = new Car () { marca = null }; 
 +var result = db.Get(template).Cast<​Car>​();​ 
 +var first = result.FirstOrDefault();​ 
 +var list = result.ToList();​ 
 +</​code>​
  
 ==== Acciones básicas ==== ==== Acciones básicas ====
Línea 137: Línea 161:
 foreach (var r in result) foreach (var r in result)
     db.Delete(r);​     db.Delete(r);​
 +</​code>​
 +
 +
 +==== Acciones avanzadas ====
 +=== Generación de IDs ===
 +''​db4o''​ por defecto genera un identificador ''​long''​ para cada objeto insertado en la DB. \\ 
 +Para coger la id de un objeto haremos: ''​db.Ext().GetID(object);''​ \\ 
 +Para coger un objeto a partir de su id haremos: ''​db.Ext().GetByID(id);''​ \\ \\ 
 +Opcionalmente también se pueden generar los UUID (//Unique Universal IDs//), que son identificadores universales para que elementos que se compartan entre diferentes DB.
 +
 +
 +
 +=== Indexar un campo ===
 +Para crear un índice deberemos de poner la siguiente línia **antes de abrir la base de datos**:
 +<code csharp>
 +Db4oFactory.Configure().ObjectClass(typeof(NombreClase)).ObjectField("​NombreCampo"​).Indexed(true);​
 +</​code>​
 +El campo que queramos indexar **no puede ser un campo autoimplementado**,​ es decir, que sea así:
 +<code csharp>
 +int id { get; set; }
 +</​code>​
 +Sería algo así:
 +<code csharp>
 +class Program
 +{
 +    public int id;
 +    public int name;
 +    static void Main(string[] args)
 +    {
 +        Db4oFactory.Configure().ObjectClass(typeof(Program)).ObjectField("​id"​).Indexed(true);​
 +        var db = Db4oFactory.OpenFile("​c:​\\prueba.db"​);​
 +...
 +</​code>​
 +
 +==== Creación de servidor ====
 +=== Embedded ===
 +Para usar accesos concurrentes desde un mismo ejecutable:
 +<code csharp>
 +IObjectServer server = Db4oFactory.OpenServer(dbPath,​ 0);
 +IObjectContainer client1 = server.OpenClient();​
 +IObjectContainer client2 = server.OpenClient();​
 +// ...
 +client1.Close();​
 +client2.Close();​
 +server.Close();​
 +</​code>​
 +=== En red ===
 +Para que funcione en red, el servidor:
 +<code csharp>
 +public void Start()
 +{
 +    lock (this)
 +    {
 +        IObjectServer server = Db4oFactory.OpenServer("​c:​\\db.db4o",​ 1258);
 +        server.GrantAccess(USER,​ PASSWORD);
 +        Monitor.Wait(this);​
 +    }
 +}
 +</​code>​
 +Y el cliente:
 +<code csharp>
 +IObjectContainer db = Db4oFactory.OpenClient(SERVER_HOST,​ 1258, USER, PASSWORD);
 </​code>​ </​code>​
db/db4o.1266772519.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)