2009-07-16 5 views
2

Ich habe eine Reihe von Objekten im db4o-Format in einer .dat-Datei. Die Objekte in dieser Datei sind OldNamespace.MyObject, OldAssemblyName.Öffnen von Objekten mit einem umbenannten Namespace/Assembly in db4o

Das Problem ist, dass ich den Namespace und Assembly in etwas permanenter umbenannt habe. Können Sie die Assembly und den Namespace nicht umbenennen (was ich gerade mache), gibt es eine Möglichkeit, die Objekte in die neuen Assembly/Namespace-Namen zu öffnen?

Oder bin ich für immer mit "MyTest3" für den Assemblynamen und Namespace fest ?!

Antwort

5

Ich fand die Antwort schneller als ich dachte, ich würde in der wiki documentation.

Dies ist die vorübergehende Art und Weise tun:

TypeAlias alias = new TypeAlias("OldNameSpace.OldTypeName, OldAssembly", "NewNameSpace.NewTypeName, NewAssembly"); 
Db4oFactory.Configure().AddAlias(alias); 
IObjectContainer db = Db4oFactory.OpenFile(dbfilename); 

Je mehr Oberbau (es ist chaotisch Code, aber es ist für eine temporäre fix):

using (IObjectContainer db = Db4oFactory.OpenFile(dbfilename)) 
{ 
    var n = db.Ext().StoredClasses(); 
    foreach (var x in n) 
    { 
     System.Diagnostics.Debug.WriteLine(x.GetName()); 
    } 
    var c1 = db.Ext().StoredClass("OldNameSpace.OldType, OldAssembly");// 
    if (c1 != null) 
     c1.Rename("NewNameSpace.OldType, NewAssembly"); 

    var c2 = db.Ext().StoredClass("System.Collections.Generic.List`1[[OldNameSpace.OldType, OldAssembly]], mscorlib"); 
    if (c2 != null) 
     c2.Rename("System.Collections.Generic.List`1[[NewNameSpace.OldType, NewAssembly]], mscorlib"); 
} 

Wie Sie ‚ILists‘ sehen muss aktualisiert werden. Stellen Sie sicher, dass Sie beim Speichern eine neue Datei erstellen, andernfalls erhalten Sie beide Typen in der Ausgabedatei.

+0

Danke für Ihre Frage und Antwort. Ich werde nichts davon tun: Es ist einfach schön zu wissen, dass ich nicht verrückt werde und es tatsächlich ein Datenbankprodukt gibt, bei dem die Ergebnisse der Abfrage von den verwendeten Variablennamen abhängen. –

Verwandte Themen