Avatar billede andershr Nybegynder
24. maj 2009 - 20:33 Der er 2 kommentarer

db4o problem

Hey hey, jeg sidder og roder lidt med en db4o database (C#), og jeg er stødt på 2 ting:

1. Database er begyndt at køre VIRKELIG langsomt. I starten var der intet, men nu når jeg prøver at hente fra den tager det omkring 20-30 sek, før den melder tilbage? Har prøvet at slette den og starte forfra, men med samme resultat...

2. Jeg kan fint gemme enkelte objekter, men når jeg begynder at give de objekter lister over andre objekter med, som f.eks.

Customer tempCustomer = new Customer(txtbName.Text, txtbAdress.Text, txtbCity.Text, zipTemp, txtbMail.Text);
MyCanvas tempCanvas = new MyCanvas();
MyShape tempShape = new MyShape("Ellipse", 10, 10);
tempCanvas.addShape(tempShape);
tempCustomer.addCanvas(tempCanvas);
db.Store(temp);

, får jeg en "objektreferencen er ikke indstillet til en forekomst af et objekt"-fejl på min Store-metode. Var det bare min tempCustomer jeg ville Store, havde der ikke været noget problem. Konfigurere min database i en metode således:

private static IConfiguration GetConfiguration()
        {
            IConfiguration config = Db4oFactory.Configure();
            config.OptimizeNativeQueries(true);
            config.AutomaticShutDown(true);
            config.LockDatabaseFile(true);
            config.Callbacks(true);
            config.UpdateDepth(10);
            config.ActivationDepth(10);
            return config;
        }
Avatar billede aaberg Nybegynder
25. maj 2009 - 14:40 #1
Jeg tror problemet er, at du prøver at gemme WPF objekter (Canvas, Shape osv) i databasen. Disse objekter har utallige referencer til andre objekter, både parent objekter og child objekter, som igen har referencer til parent og child objekter. Så du risikere at få cirkulære referencer.

Jeg må indrømme at jeg har ikke brugt db4o i andet end små testprojekter, men jeg vil tro at det virker bedst på egne veldefinerede klassesæt.
Avatar billede andershr Nybegynder
25. maj 2009 - 14:49 #2
Det er lige præcis korrekt, fandt ud af det igår...har løst det ved at gøre nogle af klasserne serializable!

Men hvorfor den kører så langsomt fatter jeg intet af...har fundet frem til at det går galt ved et QueryByExample kald...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester