Zobrazení dopředných vazeb

Dopředné vazby 1xN jsou reprezentovány polem typu Proxy.

Upravíme metodu Zobrazit tak, aby nám u každé osoby vypsala i její rodiče.

    private static void Zobrazit()
    {
        ProxyList osoby = Rivet.Instance
            .Query("select OID from Osoba")
            .Sort<Osoba>(SortDirection.Asc, a => a.DatNarozeni);

        foreach (Osoba osoba in osoby.Cast<Osoba>())
            Console.WriteLine(
                string.Format("{0} OTEC: {1} MATKA: {2}",
                osoba,
                osoba.Otec,
                //osoba.Otec.IsPersistent ? osoba.Otec : null,
                osoba.Matka
                //osoba.Matka.IsPersistent ? osoba.Matka : null
            ));

        Console.ReadLine();
    }

Dostaneme:

  • Podivné hodnoty „00000000-0000-0000-0000-000000000000“ jsou způsobeny tím, že objekt Proxy vrací v metodě „ToString“ implicitně textovou podobu svého OID. A protože příslušné osoby nemají v databázi zavedeny své rodiče (a tedy není zde metoda „ToString“ přetížena), vrací systém místo nich prázdný objekt Proxy (a jeho prázdný OID).
  • Metodu Zobrazit můžeme vylepšit tak, že příslušné řádky nahradíme těmi zakomentovanými. Vlastnost IsPersistent nám říká, jestli je daný objekt uložen v databázi (true) nebo se nachází pouze v paměti.