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
...
}
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>
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>
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.