Пример #1
0
        static readonly string s_systemDir = "UpdateClass"; // appended to SessionBase.BaseDatabasePath

        static int Main(string[] args)
        {
            try
            {
                Trace.Listeners.Add(new ConsoleTraceListener());
                VelocityDbSchema.Samples.UpdateClass.UpdatedClass updatedClassObject;
                int ct1 = 0;
                using (SessionNoServer session = new SessionNoServer(s_systemDir))
                {
                    session.SetTraceDbActivity(Schema.SchemaDB);
                    session.BeginUpdate();
                    session.UpdateClass(typeof(VelocityDbSchema.Samples.UpdateClass.UpdatedClass)); // call this when you have updated the class since first storing instances of this type or since last call to UpdateClass
                    UInt32 dbNum = session.DatabaseNumberOf(typeof(VelocityDbSchema.Samples.UpdateClass.UpdatedClass));
                    foreach (var obj in session.AllObjects <VelocityDbSchema.Samples.UpdateClass.UpdatedClass>())
                    {
                        Console.Write(obj.ToString() + " has members: ");
                        foreach (DataMember member in obj.GetDataMembers())
                        {
                            Console.Write(member.ToString() + " ");
                        }
                        Console.WriteLine();
                        obj.UpdateTypeVersion(); // comment out if you DO NOT want to migrate this object to the latest version of the class
                        ct1++;
                    }
                    int      ct2 = 0;
                    Database db  = session.OpenDatabase(dbNum, true, false);
                    if (db != null)
                    {
                        foreach (var obj in db.AllObjects <VelocityDbSchema.Samples.UpdateClass.UpdatedClass>())
                        {
                            ct2++;
                        }
                    }
                    Debug.Assert(ct1 == ct2);
                    updatedClassObject = new VelocityDbSchema.Samples.UpdateClass.UpdatedClass();
                    session.Persist(updatedClassObject);
                    session.Commit();
                    MoveToDifferentFullClassName();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(1);
            }
            return(0);
        }
Пример #2
0
        static int MoveToDifferentFullClassName()
        {
            try
            {
                using (SessionNoServer session = new SessionNoServer(s_systemDir))
                {
                    session.SetTraceDbActivity(Schema.SchemaDB);
                    session.BeginUpdate();
                    session.ReplacePersistedType(typeof(VelocityDbSchema.Samples.UpdateClass.UpdatedClass), typeof(UpdateClass.UpdatedClass));
                    session.Commit();
                }
                using (SessionNoServer session = new SessionNoServer(s_systemDir))
                {
                    session.Verify();
                    session.BeginRead();
                    foreach (var obj in session.AllObjects <UpdateClass.UpdatedClass>())
                    {
                        Console.Write(obj.ToString() + " has members: ");
                        foreach (DataMember member in obj.GetDataMembers())
                        {
                            Console.Write(member.ToString() + " ");
                        }
                    }
                    foreach (var obj in session.AllObjects <VelocityDbSchema.Samples.UpdateClass.UpdatedClass>())
                    {
                        throw new Exception("not expected");
                    }
                    session.Commit();
                }

                // change it back to original
                using (SessionNoServer session = new SessionNoServer(s_systemDir))
                {
                    session.SetTraceDbActivity(Schema.SchemaDB);
                    session.BeginUpdate();
                    session.ReplacePersistedType(typeof(UpdateClass.UpdatedClass).AssemblyQualifiedName, typeof(VelocityDbSchema.Samples.UpdateClass.UpdatedClass));
                    session.Commit();
                }
                using (SessionNoServer session = new SessionNoServer(s_systemDir))
                {
                    session.Verify();
                    session.BeginRead();
                    foreach (var obj in session.AllObjects <VelocityDbSchema.Samples.UpdateClass.UpdatedClass>())
                    {
                        Console.Write(obj.ToString() + " has members: ");
                        foreach (DataMember member in obj.GetDataMembers())
                        {
                            Console.Write(member.ToString() + " ");
                        }
                    }
                    foreach (var obj in session.AllObjects <UpdateClass.UpdatedClass>())
                    {
                        throw new Exception("not expected");
                    }
                    session.Commit();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                return(1);
            }
            return(0);
        }