Élen jár - kód első és adatbázis inicializálása

Bár a kifejezés «DevOps» viszonylag új, és a közelmúltban kezdett, hogy fedezze sokkal kiterjedtebb tevékenységet, különösen az automatizált tesztelés és telepítés, úgy vélem, hogy az első minta a fejlesztő automatizálható műveletek olyan régi, mint maga a szoftver. Úgy értem, a különleges képessége, hogy hozzon létre, és inicializálni az adatbázis, ha az alkalmazás telepítve van. Sok „szoftver” vállalat a vertikálisan integrált rendszerek, amelyek forgalmazása a különböző ügyfelek és alkalmazkodjanak az igényeket.

Szempontok az ilyen rendszerek, amelyek állítható, attól függően, hogy a termék jellemzői és az üzleti vállalkozások, de merem állítani, hogy a legkevesebb, bármilyen függőleges integrálható szoftvert kell külön az adott ügyfél adatbázis. Ezért az adatbázist kell létrehozni táblázatok és diagramok szükséges egy adott környezetben, és adatokkal való feltöltése „a helyén.”

Nem minden szükséges feladatot mindig lehet automatizálni és integrálja magát a terméket. Képzeljük el például, import meglévő adatokat. Importált adatokat Excel fájlokat vagy örökölt adatbázisok, akkor valószínű, hogy az igény is, hogy egyfajta eszközt importálni az adatokat, és töltse be az új tároló. Azonban, ha az alkalmazás az adatok hozzáférési szint használ Code Először Entity Framework 6.x, akkor legalább létre diagramokat és táblázatokat az adatbázisban, hogy könnyen automatizálható és zökkenőmentesen végre az első alkalom, hogy az alkalmazás futtatásához.

Ebben a cikkben, röviden kiemelni a rendelkezésre álló eszközök hosszú ideig a kódex első, prizmán keresztül az alkalmazás a különböző ügyfelek (multi-ügyfél alkalmazás). Különösen fogok összpontosítani, hogyan kell létrehozni és feltölteni az adatbázist, és hogyan programozott meghatározza annak nevét és a connection string.

Mi lefektették az asztalok áramkörök

Tegyük fel, hogy van egy új Visual Studio projekt, amely már kapcsolódik NuGet-Service Entity Framework 6.x. A következő lépés, ami szükséges lehet, - hozzanak létre egy osztály könyvtár adatokhoz való hozzáférés, vagy legalább egy külön mappába az aktuális projektben az összes fájl mentése, amelyek valamilyen módon kapcsolódnak a funkcionalitást adatokhoz való hozzáférést. A szabályok szerint a Entity Framework, akkor kell egy osztály DbContext képviselő belépési pont az alkalmazás adatait alrendszer. Íme egy példa egy ilyen osztály-specifikus alkalmazások:

A legtöbb példa, hogy megtalálható a kódex első alapján a határozott és tartós kapcsolat string, amely hivatkozik a konfigurációs fájlban, vagy amely egyértelműen továbbított keretében az osztály. A végeredmény az, hogy a kódex első létrehoz egy adatbázist a biztosított kapcsolat string, ha először az alkalmazást. Vessünk egy közelebbi pillantást erre a szempontra.

Class DbContext támogatja négy inicializálás stratégiák táblázatban. 1.

Táblázat. 1. Stratégia Kód Első az adatbázisban inicializálás

Ez ellenőrzi, hogy van-e az adatbázisban, és ha nem talál, létrehoz egy adatbázist. Ha az adatbázis létezik, de van egy kompatibilis sémát, akkor kivételt dob.

Megjegyzés. Ez az alapértelmezett inicializáló

Ez hozza létre az adatbázist, ha még nem létezik. Ha az adatbázis létezik, de van egy kompatibilis sémát, eltávolítja, és létrehoz egy új

Amikor elindítja az alkalmazást, törölje a meglévő adatbázist, és újra létrehozza

Osztály saját kezdőérték van írva, hogy hozzon létre egy viselkedés, nem ajánlanak bármely más inicializáló.

Megjegyzés. Akkor érdemes használni ezt a lehetőséget, hogy adjunk néhány tartalmat a mester-adatbázis


Szerint a viselkedés CreateDatabaseIfNotExists Alapértelmezésben minden alkalommal, amikor létrehoz összefüggésben osztály ellenőrizzük, hogy van-e, és hogy elérhető az adatbázis, amelyre a kérelem vonatkozik. Ha nem, akkor jön létre. Ha az adatbázis létezik és elérhető, de ez nem egyeztethető össze a rendszer a nyitott szerkezetű egység osztályok, kivételt dob. Ahhoz, hogy megszabaduljon egy kivétel, módosítani kell a szervezet osztály, vagy, ami valószínűbb, hogy módosítsa az adatbázis séma vagy azon keresztül történő szoftver interfész, vagy használja a migrációs szkript alapján Entity Framework.

Szerintem ez egy ideális lehetőség, ha a kérelem a szintje a termelési rendszer. De a fejlődési szakaszban, én inkább lehetőség DropCreateDatabaseIfModelChanges, ami valójában megvéd minden rutin kapcsolódó adatbázis-támogatás: egyszerűen a csípés entitás osztályok, ahogy kell, és Entity Framework fog változtatni az adatbázisba, ha megnyomja az F5 legközelebb Visual Studio. Ahhoz, hogy aktiválja a kiválasztott inicializálási stratégia, adjuk hozzá a kivitelező saját osztály DbContext következő sort:

Vegye figyelembe, hogy akkor is adja meg az adatbázis kezdeti értéket a konfigurációs fájlban, ami lehet egy jó ötlet, ha azt tervezi, hogy egy másik stratégiát a termelési környezet és a fejlődés.

Összefoglalva, Kód Első írhatunk olyan alkalmazás, amely automatikusan létrehozza az összes asztal az adatbázis, amikor először kezdi. Más szóval, már csak be kell másolni a fájlokat, majd az alkalmazás futtatásához. Ez a viselkedés azonban akkor működik a legjobban, ha a rendszert úgy tervezték, egy ügyfél. Amikor létrehoz egy rendszert több ügyfél számára, hogy a legjobb dolog, amit tehetünk - használja a beállítási segédprogramot.

Ennek egyik oka a némileg eltérő megközelítés, hogy szükség lehet különböző elnevezési adatbázis, például, ha hozzá kíván adni a nevét, a felhasználó-specifikus előtagot. Ábra. A 2. ábra egy csontváz egy parancssori segédprogram. A program veszi az ügyfél-specifikus előtag a parancssorból, megfelelően formázza az adatbázis nevét, és ezután egy származékát DbContext osztály, amely újra létrehozza az adatbázis, és feltölti azt a megfelelő kiindulási adatok.

Ábra. 2. egyedi az ügyfél adatbázis neve

Kezdeti töltése hozza az adatbázis

Bármely rendszer célja, hogy alkalmazkodjanak az ügyfelek igényeinek egységes üzleti területen kell egy több asztal kiosztott mentési lehetőségek és preferenciák, minden ügyfél. Ezt az információt hozzáférhetővé kell tenni valamilyen módon a szoftver telepítése során folyamatot. A valós körülmények között, a kezdeti részét az adatbázis közös, minden növényre, de egy másik része - egy adott vásárló. A részben attól függ, hogy az adatokat az ügyfél, jellemzően importált külső forrásokból, és igényel speciális eljárások olyan script, vagy lefordított kód. Bizonyos összefüggésekben helyénvaló lehet még valamilyen mechanizmus beágyazott függőségeket összefoglalni a behozatal tőkeszerkezet a közüzemi növény, ami inicializálja az adatbázis. Azonban a statikus tartalom adatbázis, a kód első kínál speciális szolgáltatásokat.

saját inicializáló

Ahhoz, hogy az adatokat az adatbázisba inicializálás során, meg kell, hogy saját kezdőérték adatbázis táblázatban leírt. 1. Saját inicializáló (egyéni kezdőérték) - egy osztály származik az egyik előre meghatározott inicializáló, mint DropCreateDatabaseIfModelChanges. Az egyetlen szigorú követelmény ebben az osztályban - felülírása Seed:

Az eljárás megvalósítása Seed végrehajt minden olyan kód, amely feltölti egy adatbázis tábla, és felkéri őket a mellékelt DbContext. Ez minden.

Ha azt tervezi, egy alkalmazás több ügyfél számára, a meghatározása saját inicializáló lesz egy lépés a helyes irányba, mert kapsz egy pont, ahol meg fogja határozni a kezdeti adatbázis űrlapot minden egyes ügyfél. Ez inicializáló közönséges C # osztályú, így támogatja a beágyazott eszközök függőségek kötődnek bizonyos részeinek logikus, hogy importálja az adatokat onnan, ahol vannak.

Végül, de nem utolsósorban, az adatbázis lehet szakítani inicializáló telepítés tárol maradt teljesen külön művelet akár szabályozható másik vagy informatikai DevOps-csoport. Jelenteni infrastruktúra Kód Első figyelmen kívül hagy minden inicializáló, meg kell tenni a kivitelező DbContext osztályú alábbi kódot:

Például ez egy biztonságos használatának lehetősége, amikor elengedi egy frissítést a meglévő rendszereket. Letiltása inicializáló biztosítja, hogy Ön semmilyen körülmények között nem soha nem fogja elveszíteni a meglévő adatokat.

következtetés

Végül Kód Első segítségével írhatsz multitenantnye alkalmazásokhoz és több vevők, így ha ez főleg a jól ismert konfigurációt és az ügyfél. Szükséges csak bizonyos ismeretekkel a hozzárendelés kapcsolat string és inicializálási folyamatot. Az Entity Framework Core alapelvek ugyanazok maradnak, bár a részleteket, hogy hogyan működnek, megváltoztak. Különösen egy olyan új osztályát alakult DbContext felülbírálja OnConfiguring, amelyen keresztül kapcsolódjon az adott kontextusban adatbázis-szolgáltató, és átadja az identitás és egyéb elemeket.

Hálámat felülvizsgálatára a cikk a Microsoft szakértői Andrea Saltarello (Andrea Saltarello).