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.
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.
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ó.
Az entitás neve.
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:
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.
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.
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:
Vedd észre, hogy használnod kell az each kulcsszót!
A generált C# osztály neve.
Ennek segítségével határozhatod meg az adatbázis kapcsolati módot. Erről később még lesz szó.
Használd ezt, ha saját dokumentációt szeretnél a generált osztályhoz írni. Az alapértelmezett dokumentáció:
Egyéni dokumentáció:
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.
A keresőkifejezés az egyedek ToString metódusa.
Állítsd hamis-ra (false) ezt, ha nem szeretnél unit teszteket ehhez az entitáshoz.
Ezt az attribútumot állítsd be, ha szeretnéd, hogy a generált osztály absztrakt legyen.
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.
Beállítja, hogy az objektum hierarchikus-e. A későbbiek folyamán lesz még erről szó.
Átalakítja az osztályt interfésszé. Ha az entitásod Interface, az adatbázis módját Transient-re kell állítanod.
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.
Az entitás névtere.
Ennek nincsen hatása a generált C# vagy SQL kódra, csak a fejlesztő tehet vele megjegyzéseket az M# kódban.
Az egyes számú nevet az M# automatikusan generálja, de ezzel az attribútummal sajátot adhatsz meg.
Az elsődleges kulcs típusa. A típus alapértelmezetten GUID és az entitás implementálja a hozzá tartozó interfészt.
Az adatbázis sémája, az alapértelmezett a dbo.
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:
Ha meghívod ezt:
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:
Ha igazra állítod, az M# automatikusan csökkenő sorrendbe rendezi az adatokat, amikor meghívod:
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.