Symbol eXtension » entitás

Címkék: ‘entitás’

3. Adapter = Entitások létrehozása

posted in: Adatbázis elérés (Tags: , , ) - No Comments

Az entitások önmagukban reprezentálnak egy sort az adatbázisban, objektumként minden mezőhőz hozzáférési lehetőséget biztosítanak. Mindezt típusosan. Az entitásoknak azonban valahogy létre kell jönniük. Önállóan, a new Customer() nem alkalmas arra, hogy az entitás létrejöjjön.

Az EntityHandler példány annyi Adaptert tartalmaz, ahány féle táblánk van az adatbázisban. A Customer entitás kezeléséhez az EntityHandler.CustomerAdapter, a Product entitás-hoz pedig az EntityHandler.ProductAdapter lesz segítségünkre. Az adapterek az alábbi metódusokat tartalmazzák (a metódushívások a using (EntityHandler handler = CreateEntityHandler()) blokkon belül értendőek):

  • CustomerCollection CreateEmptyCollection(): Üres entitásgyűjtemény létrehozása, amelyhez entitásokat adhatunk hozzá vagy a gyűjtemény AddNew() metódusát meghívva új entitást hozhatunk létre benne.
  • Customer CreateNewObject(): Új entitás példány létrehozása önállóan. Az entitás nem egy gyűjteményben jön létre, önállóan létezik.
  • CustomerCollection SelectAll(): Összes entitás lekérdezése és elhelyezése egy entitás gyűjteménybe. (WHERE nélküli SELECT). Amennyiben az entitásnak van Deleted mezője, úgy a SelectAll() paramétere a ShowDeleted, amely alapján eldől, hogy minden elemet vagy csak a nem törölteket jelenítsük meg.
  • Customer SelectByPK(long id): Adott ID-jú elem beolvasása és létrehozása önálló entitásként.
  • CustomerCollection SelectByCondition(WhereClause whereclause): Megadott SQL WHERE szűrőfeltételeknek megfelelő adatbázis sorok kiolvasása a táblából.

 

WhereClause?

A WhereClause egy típusos WHERE feltétel megírását támogató eszköz. Amennyiben a tábla és mezőneveket pontosan kívánjuk megadni, úgy célszerű használni az XXXField konstansokat.

Például:

                    WhereClause wc = CustomerField.Phone == “20-555-7845” | CustomerField.Name == “Csaba”;
                    CustomerCollection cc = handler.CustomerAdapter.SelectByCondition(wc & CustomerField.PaymentMethod != 12);

2. Minden adat = entitás

posted in: Adatbázis elérés (Tags: , , , , ) - No Comments

Az entitás jellegű megközelítési mód minden adatot típusos formában enged kezelni. Ennek elsődleges célja és előnye, hogy nem tudunk mezőnév elírás miatt nem létező adatra hivatkozni, a projekt fordítésa során pedig már a fejlesztőkörnyezetben hibát kapunk, ha nem létező mezőre hivatkozunk. Külön kiemelendő, hogy az idegen kulcsokon való kapcsolódás is erősen típusos formában valósul meg.

 

Entitások
Minden adat egy-egy entitás objektum. Egy létrehozott vagy betöltött vevő egy Customer objektum példányként kezelhető. A Customer objektumban megtalálható minden mező, amely az adatbázisban rendelkezésre áll. Ezek a mezők a megfelelő típussal rendelkeznek.

  

Például:

    Customer c = handler.CustomerAdapter.CreateNewObject();
    c.Name = “Sample”; // string mező, mert az adatbázisban VARCHAR(100)
    c.SaveChanges(); // adatok mentése, csak implicit módban van rá szükség

Minden entitás rendelkezik az alábbi metódusokkal:

  • Delete(); // adat törlése; a rendszer figyelembe veszi, hogy az entitást fizikailag kell törölni, vagy csak logikailag (deleted=0)
  • Display(); // adat megjelenítése a szerkesztőablakában (nem minden entitásra érhető el)
  • DisplayAsDialog(); // adat megjelenítése a szerkesztőablakában modálisan (nem minden entitásra érhető el)

Az entitáshoz kapcsolódó idegen kulcsok elérhetőek objektumok szintjén (entitás) is. Például a Customer.PaymentMethod tartalmazza a vevő fizetési módjának ID-ját, míg a Customer.PaymentMethodObj a fizetési módot objektumként engedi elérni. Így láncoltan érhetőek el az adatok: Customer.PaymentMethodObj.DiscountPercent => vevő fizetési módjának kedvezmény mértéke.

 

Entitásgyűjtemények

Egynél több entitás gyűjteménybe szervezhető. A CustomerCollection például több vevőt fog össze. A gyűjtemények mentésekor a gyűjtemény minden elemének mentése megtörténik. A gyűjtemények felhasználási módjai:
 

  • Üres gyűjtemény létrehozása új adat hozzáadása céljából: CustomerCollection.AddNew();
  • Minden adat lekérdezése: Minden fizetési mód lekérdezésekor PaymentMethodCollection típusú objektum jön létre.
  • Szűrt adathalmaz lekérdezése: “A” betűvel kezdődő nevű vevők lekérdezéskor CustomerCollection jön létre.
  • Kapcsolódó gyermekobjektum gyűjtemények: Egy entitás objektum gyermek objektumaihoz való hozzáférés során is gyűjteményeket kapunk. Customer.ChildDocumentByCustomer a Document tábla azon entitás sorait adja vissza, amelyek ehhez a vevőhöz tartoznak. Fontos kiemelni, hogy a gyerekgyűjteményekhez való hozzáadás esetén a szülőre mutató hivatkozás beállítása kerül, a Customer.ChildDocumentByCustomer.AddNew() metódushívás során egy olyan dokumentum entitás jön létre, amelynek mentésekor a vevőhöz fog tartozni.

Gyűjtemények műveletei:

  • Indexelés: A gyűjtemény tömbként indexelhető.
  • AddNew(): új objektum létrehozása a gyűjteményben.
  • Count: elemek száma.
  • Filter és Find: adott feltételnek megfelelő elemek (Find esetén első elem) kiválasztása a gyűjtemény szűkítésével.