الكائنات الافتتاحية مع مساحة اسم / تجميع غير تسمائي في DB4O

StackOverflow https://stackoverflow.com/questions/1137955

  •  16-09-2019
  •  | 
  •  

سؤال

لدي مجموعة من الكائنات بتنسيق 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". تأكد من أن تحفظ عليك القيام بذلك في ملف جديد، وإلا فستحصل على كلا النوعين في ملف الإخراج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top