Proxy

Pokud známe OID, můžeme objekt načíst třeba takto:

        Guid OID = new Guid("593AE58F-A6AA-45E0-8700-112966131E80");
        Proxy proxy = new Proxy(OID);
        using (Context ctx = Rivet.Instance.GetContext())
        {
            proxy.Bind(ctx);
            Muz muz = proxy.Cast<Muz>();
            ...
        }

Zkráceně:

        using (Context ctx = Rivet.Instance.GetContext())
        {
            Muz muz =
                new Proxy(new Guid("593AE58F-A6AA-45E0-8700-112966131E80"))
                .Bind(ctx).Cast<Muz>();
            ...
        }

Třída Proxy má pro zjednodušení práce také tyto statické metody:

  • „New – tuto metodu můžeme s výhodou použít pro přidávání nových objektů, např.:

        using (ContextTran ctx = Rivet.Instance.GetContextTran())
        {
            Muz muz = Proxy.New<Muz>(ctx);
            muz.Jmeno = "Aleš";
            muz.Prijmeni = "Novák";
            muz.DatNarozeni = new DateTime(1977, 3, 8);
            muz.Update();

            ctx.Commit();
        }

  • „Cast – tuto metodu můžeme s výhodou použít pro update existujících objektů, např.:

        using (ContextTran ctx = Rivet.Instance.GetContextTran())
        {
            Guid OID = new Guid("889409E4-3517-4044-8E1A-A21CB537B7C6");
            Muz muz = Proxy.Cast<Muz>(OID, ctx);
            muz.Jmeno = "Alois";
            muz.Update();

            ctx.Commit();
        }

        Všiměme si, že touto metodou lze nahradit načítání objektů pomocí konstruktoru třídy „Proxy, jak to bylo popsáno výše na této stránce.

  • „Delete – tuto metodu můžeme s výhodou použít pro smazání objektů, jejichž OID známe, např.:

        using (ContextTran ctx = Rivet.Instance.GetContextTran())
        {
            Guid OID = new Guid("889409E4-3517-4044-8E1A-A21CB537B7C6");
            Proxy.Delete(OID, ctx);

            ctx.Commit();
        }

Ekvivalence objektů:

Třída „Proxy má přetížené operátory rovnosti a nerovnosti (také metody „Equals a „GetHashCode) tak, že dva objekty jsou vyhodnoceny jako shodné právě tehdy, rovnají-li se jejich OID – tedy jedná-li se o shodný záznam. Ekvivalence se nevyhodnocuje na základě totožnosti instancí paměťového objektu.