Naplnění systému daty

Níže uvedená metoda naplní systém pěti osobami – rodiči a třemi dětmi.

Příklad demonstruje:

  • objekty je možno vytvářet „odpojené“ a připojit je k databázi teprve před uložením
  • připojení objektu k databázi se provádí metodou „Bind
  • databázové příkazy INSERT a UPDATE se provádí příkazem „Update“ na připojeném objektu
  • připojení se provádí prostřednictvím bloku using a objektu typu Context (metoda Update vyžaduje transakční připojení ContextTran)
  • připojení k databázi trvá uvnitř bloku using. Po opuštění tohoto bloku je spojení uzavřeno.
  • pokud je použito transakční připojení ContextTran, je třeba před jeho uzavřením explicitně zavolat metodu Commit, v opačném případě dojde před ukončením připojení k automatickému odrolování transakce a k žádným změnám v databázi nedojde.

    private static void Naplnit()
    {
        Muz janSvoboda =
            new Muz() { Jmeno = "Jan", Prijmeni = "Svoboda",
            DatNarozeni = new DateTime(1949, 4, 9) };
        Zena janaSvobodova =
            new Zena() { Jmeno = "Jana", Prijmeni = "Svobodová",
            DatNarozeni = new DateTime(1951, 8, 2) };
        Muz jiriSvoboda =
            new Muz() { Jmeno = "Jiří", Prijmeni = "Svoboda",
            DatNarozeni = new DateTime(1971, 7, 3),
            Otec = janSvoboda, Matka = janaSvobodova };
        Muz pavelSvoboda =
            new Muz() { Jmeno = "Pavel", Prijmeni = "Svoboda",
            DatNarozeni = new DateTime(1975, 6, 19),
            Otec = janSvoboda, Matka = janaSvobodova };
        Zena evaSvobodova =
            new Zena() { Jmeno = "Eva", Prijmeni = "Svobodová",
            DatNarozeni = new DateTime(1976, 7, 21),
            Otec = janSvoboda, Matka = janaSvobodova };

        using (ContextTran ctx = Rivet.Instance.GetContextTran())
        {
            janSvoboda.Bind(ctx).Update();
            janaSvobodova.Bind(ctx).Update();
            jiriSvoboda.Bind(ctx).Update();
            pavelSvoboda.Bind(ctx).Update();
            evaSvobodova.Bind(ctx).Update();

            ctx.Commit();
        }
    }