Az M# programozási nyelv

Az entitás típusokról

Az entitás típusok megértése

Az entitás típusok az Entity Data Model (EDM)-en belüli adatszerkezetek leírásának alapvető építőkövei. Egy modellben egy entitás típus reprezentálja a magas szintű elemek struktúráját, minta vásárlók vagy a rendelések. Egy entitás típus a belőle létrehozott egyedek sablonja. Minden sablon az alábbi elemekből áll:

Egy alkalmazásban egy entitástípus egy egyede egy bizonyos objektumot reprezentál (mint egy bizonyos vásárló vagy rendelés). Minden egyes egyednek egyedi kulcsra van szüksége egy egyedhalmazban.

Entitás típusok megadása

Ahogyan az előző fejezetben is látható volt, az M# nagyon részletes és felhasználóbarát felhasználói felületet biztosít az entitások és az üzleti logika meghatározására. Széleskörűen támogatja és automatizálja a legtöbb feladatot, amelyek az entitások közötti kapcsolatok meghatározásához szükségesek, valamint legenerálja az SQL táblákat és a kapcsolódó .NET osztályokat is.

Attribútumok

Base type

Az alaptípus attribútum lehetővé teszi, hogy egy entitásnak egy őst adjunk meg. Ez különösen hasznos, amikor az entitások hasonló adatokat tárolnak, mivel nem kell újra és újra meghatározni ugyanazokat a tulajdonságokat minden érintett entitás számára, hanem egy alaptípussal lehet dolgozni a logika és az attribútumok duplikációja helyett.

Ha például van egy Fejlesztő és egy Igazgató nevű entitásunk, akkor mindkettő alaptípusa lehet az Alkalmazott, mivel hasonló sémával rendelkeznek, pl. személyes- és kapcsolati adatok, valamint a logikai követelményeken is osztoznak. Ha mondjuk az összes bejelentkezési próbálkozást tárolni kell, akkor a közös Alkalmazott entitást fel lehet erre használni.

Egy alaptípus meghatározásával az M# implementálja az öröklődést az entitások között, és normalizált SQL adatbázis táblákat generál belőlük külső kulcsos kapcsolatokkal az ID oszlopok között. Az öröklődésről egyébként a későbbiek folyamán lesz még szó.

Name

Az entitás neve.

Instance accessors

Ennek az értéknek az igazra (true) állításával az M# legenerálja az egyedekhez tartozó setter/getter függvényeket. Ha például van egy Státusz entitásod, és igazra állítod az egyedelérést, használhatod a következő kódot:

myUser.Status = Status.Activated;

Sortable

Ha egy entitást rendezhetőként akarsz megjelölni, először létre kell hoznod az következő tulajdonságot: Type = Integer, Name = "Order". Ezután állítsd be a következő attribútumokat: Sortable=True és Sort Property=Order.

Rendezhető

Ennek az attribútumnak az az előnye, hogy nem kell aggódnod a rendezésen, az M# megteszi helyetted. Ha létrehozol egy Alkalmazott listát, automatikusan tudsz generálni hozzá rendező fel és le nyilakat, és megadhatod a rendezés módszerét is.

Test instance name expression

Ha TDD M# sablont használsz, akkor valószínűleg be kell állítanod a teszt egyed névkifejezést. Ezzel az attribútummal megadhatsz egy saját nevet, amivel a teszt egyedeket érheted el a teszt projektben. Alapértelmezetten a ToString() értékét használja az M#, de ha ez nem egyedi, akkor mindenképp be kell állítanod. Ha a ToString() a KeresztNév, akkor valószínűleg szükséged lesz egy TeljesNév kifejezésre is, amit aztán a teszt projektben így használhatsz:

var johnSmith = World.Employees.JohnSmith;

Teszt egyed névkifejezés

Vedd észre, hogy használnod kell az each kulcsszót!

Class name

A generált C# osztály neve.

Database mode

Ennek segítségével határozhatod meg az adatbázis kapcsolati módot. Erről később még lesz szó.

Documentation

Használd ezt, ha saját dokumentációt szeretnél a generált osztályhoz írni. Az alapértelmezett dokumentáció:

Alapértelmezett dokumentáció

Egyéni dokumentáció:

Dokumentáció az M# kódban

Dokumentáció a C# kódban

Generate parse method

Ez az attribútum létrehoz egy statikus függvényt, ami visszaadja azt az Alkalmazott (Employee) entitást, amit a megadott szöveges érték reprezentál, vagy null-t, ha nem található illeszkedő objektum.

M# megfeleltetés

C# megfeleltetés

A keresőkifejezés az egyedek ToString metódusa.

Generate unit tests

Állítsd hamis-ra (false) ezt, ha nem szeretnél unit teszteket ehhez az entitáshoz.

Is abstract

Ezt az attribútumot állítsd be, ha szeretnéd, hogy a generált osztály absztrakt legyen.

M# absztrakció

C# absztrakció

Is cachable

Legyen igaz, ha szeretnéd, hogy az entitás típus cache-elődjön, hamis, ha nem. Ha nem határozod meg az attribútum értékét, akkor az M# cache-elni fogja a web.config fájlban meghatározott Database.Cache.Enabled érték szerint.

M# cahce-elés

C# cahce-elés

Is hierarchy

Beállítja, hogy az objektum hierarchikus-e. A későbbiek folyamán lesz még erről szó.

Is interface

Átalakítja az osztályt interfésszé. Ha az entitásod Interface, az adatbázis módját Transient-re kell állítanod.

Log events

Alapesetben az M# minden egyed összes eseményét naplózza és eltárolja, mint a beszúrás, frissítés, törlés. Ez az attribútum lehetővé teszi, hogy kikapcsold ezt a viselkedést.

M# naplózás

C# naplózás

Namespace

Az entitás névtere.

Notes

Ennek nincsen hatása a generált C# vagy SQL kódra, csak a fejlesztő tehet vele megjegyzéseket az M# kódban.

Plural name

Az egyes számú nevet az M# automatikusan generálja, de ezzel az attribútummal sajátot adhatsz meg.

Primary key type

Az elsődleges kulcs típusa. A típus alapértelmezetten GUID és az entitás implementálja a hozzá tartozó interfészt.

GuidEntity

M# elsődleges kulcs típus

C# elsődleges kulcs típus

Schema

Az adatbázis sémája, az alapértelmezett a dbo.

Soft delete

Ez az attribútum nagyon hasznos, ha azt szeretnéd, hogy a felhasználó törölhessen adatokat, de szeretnél egy másoldatot megtartani az adatbázisban. Ha a puha törlést használod, az M# létre fog hozni egy rejtett oszlopot az adatbázis táblában:

[.Deleted] bit NOT NULL

Puha törlés

Ha meghívod ezt:

Database.Delete()

Akkor az M# beállítja ezt az értéket 1-re, és nem tudod majd elérni az egyedet a következő hívással:

Database.GetList()

Sort descending

Ha igazra állítod, az M# automatikusan csökkenő sorrendbe rendezi az adatokat, amikor meghívod:

Database.GetList()

To string expression

Beállítja a ToString() értékét. Hasonló a Default property attribútumhoz azt kivéve, hogy egyéni kódot írhatsz egy tárolt vagy számolt tulajdonság használata helyett.