الكائنات الافتتاحية مع مساحة اسم / تجميع غير تسمائي في DB4O
سؤال
لدي مجموعة من الكائنات بتنسيق DB4O في ملف .dat. الكائنات الموجودة في هذا الملف aldnamespace.myobject، oldassemblyname.
المشكلة هي أنني منذ ذلك الحين أعادت تسمية مساحة الاسم والتجميع لشيء أكثر دائمة. اختصار إعادة تسمية الجمعية واسم المسام (وهو ما أقوم به)، هل هناك طريقة لفتح الكائنات في أسماء التجميع / مساحة الاسم الجديدة؟
أو أنا عالق إلى الأبد مع "mytest3" لاسم التجمع واسم مساحة الاسم؟!
المحلول
لقد وجدت الإجابة أسرع مما اعتقدت أنني سأفعل ذلك وثائق الويكي.
هذه هي الطريقة المؤقتة للقيام بذلك:
TypeAlias alias = new TypeAlias("OldNameSpace.OldTypeName, OldAssembly", "NewNameSpace.NewTypeName, NewAssembly");
Db4oFactory.Configure().AddAlias(alias);
IObjectContainer db = Db4oFactory.OpenFile(dbfilename);
الطريقة الأكثر دائمة (رمز فوضوي ولكنها لإصلاح مؤقت):
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");
}
كما ترون بحاجة إلى تحديث "ilists". تأكد من أن تحفظ عليك القيام بذلك في ملف جديد، وإلا فستحصل على كلا النوعين في ملف الإخراج.
لا تنتمي إلى StackOverflow