Entity Framework 6, adatbázis létrehozásával kapcsolatban
Ha a munka a Entity Framework minden előző példákban már hivatkozott megállapodás Code-First automatikus detektálására az adatbázis kapcsolat. Alapértelmezésben Code-Először hozzon létre egy adatbázist a helyi szerveren. \ SQLEXPRESS, a teljes körű keretében egy osztály az adatbázis nevét (pl névtér + osztály neve). Például a projekt ez azt jelenti, hogy a kód-Először hozzon létre egy adatbázist nevű CodeFirst.SampleContext. Gyakran ez a viselkedés szükséges újból, különösen, elhaladtunk az adatbázis nevét a kivitelező MyShop összefüggésben osztályban. Ez a cikk részletesen leírja a konfigurációs adatbázis nevét, és csatlakozik hozzá.
Az alkalmazás használata konfigurációs fájl
A legegyszerűbb módja, hogy ellenőrizzék a kapcsolatot az adatbázis használata az alkalmazás konfigurációs fájlban. A konfigurációs fájl, akkor felülírja az eredeti szerződés Code-első és pin pont a connection stringet az adatbázishoz. Ez a megközelítés különösen hasznos, ha meg akarja változtatni a connection string az összefüggésben, hogy jelezze a kapcsolatot a távoli (nem helyi) alapján, ha telepíti az alkalmazást adatokat.
Ezzel a megközelítés lehetséges, hogy több adatot modellek. Az egyes projektek, ahol utalunk CodeFirst projekt, tudjuk meg egy connection string, azaz Egy modell fog működni a különböző adatbázisokban.
Ahhoz, hogy adja meg a kapcsolat string használt ConnectionString részén konfigurációt. Alapértelmezésben a connection stringet kell a neve megegyezik a helyi fájlt és megadhatja akár a teljes nevét és egy rövid (azaz SampleContext vagy CodeFirst.SampleContext). Ennek köszönhetően, Entity Framework automatikusan megtalálja a megfelelő kapcsolat húr a konfigurációs fájlban, és azt használja. Az alábbi példa bemutatja a meghatározása összekötő vezetékek:
Fuss a példa, és győződjön meg arról, hogy a kódex-Először hozzon létre egy új adatbázist a név MyShop2 az aktuális modell. Ha tanult példák a korábbi cikkekben, még mindig vegye ki az alap osztály konstruktora hívást keretében osztályban. Ennek eredményeként a következő adatbázis jön létre:
Kapcsolat beállítási összefüggésben osztály a kivitelező
Fent láthatod, hogyan kell beállítani a connection stringet a konfigurációs fájlban, hogy a kontextus automatikusan használni fogja megállapodások révén Code-First. Most nézzük meg valamilyen módon kezelni adatbázis-kapcsolat létesíthető a kódot.
Class DbContext, mint az alapértelmezett konstruktor tartalmaz néhány túlterhelt változatainak tervezők. Ha egy ilyen konstruktőrök, Code-First nem fogja használni, hogy a megállapodás automatikusan megkeresse connection string. A legegyszerűbb változat DbContext osztály konstruktor úgy egy-paramétert. Lássuk, hogyan kell használni ezt a kivitelező a származtatott osztály:
Ez a szerkesztő vezetünk vagy egy adatbázis nevét vagy teljesen minősített connection string. Entity Framework elég okos ahhoz, hogy különbséget egy nevet és connection string, ebben a példában a nevét adja meg az adatbázis.
Figyeljük meg, hogy ebben a példában, hívjuk túlterhelt konstruktora a kivitelező DbContext alapértelmezett származék SampleContext osztályban. Ezzel a megközelítéssel, hogy a design, ha létrehoz egy környezeti objektum az alkalmazásban, a kapcsolat string automatikusan kiválasztva SampleContext alapértelmezett konstruktor. Néha meg kell határozni a connection string létrehozása keretében objektumot. Ehhez felvehet egy túlterhelt konstruktora keretében egy osztály egy hívás túlterhelt kivitelező DbContext:
Most a kód működik, az adatokat, ha megteremti a környezeti objektum osztály, akkor adja meg a nevét az adatbázisból, vagy a kapcsolat string:
Ez a példa beolvassa az adatokat az összes ügyfél az ügyfelek adatbázis tábla MyShop2, mert jeleztük a teljes kapcsolat string az adatbázisba. Ha ebben a példában, akkor létrehoz egy környezeti objektum az alapértelmezett konstruktor:
A Code-Első használat megállapodást az automatikus keresést a connection string, és ha talál egy kapcsolat húr a nevét vagy SampleContext CodeFirst.SampleContext, az megpróbál csatlakozni egy adatbázist a neve CodeFirst.SampleContext.
Ön is kíváncsi, hogyan lehet kifejezetten át az osztály konstruktora összefüggésben connection string neve, ha az nem egyezik a környezet osztályhoz. Használhatja rövidebb connection string egyetlen paraméter neve:
Most Code-első az, hogy nézze meg a konfigurációs fájl nevét a connection string MyConnectionStringName.
Újrafelhasználása az adatbázis-kapcsolat
Az egyik változat túlterhelt DbContext kivitelező elfogad egy kapcsolat objektumot űrből DbConnection System.Data.Common neveket. Ezzel a lehetőséggel akkor lehet hasznos, ha meg szeretné adni több objektumot keretében egy és ugyanazon kapcsolat objektumot, és nem szeretné, hogy adja meg minden egyes alkalommal az adatbázis nevét vagy connection string. Ie DbConnection tárgy tárolható egy adott helyen alkalmazást, és akkor nézze meg, hogy minden alkalommal, amikor egy környezeti objektum. Az alábbiakban egy példát:
Ebben a példában létrehoztunk DbConnectionToMyShop osztály csatlakozni az adatok MyShop. A cél ebben az osztályban jut el a kivitelező, az alapértelmezett környezet osztályhoz. Azt is létrehozott a kényelem túlterhelt kivitelező - az alkalmazás kódját, akkor egyszerűen át az objektumot szeretne csatlakozni. Connections osztályokat lehet meghatározni egy fájlt, majd használjuk az alkalmazást. A második paraméter a kivitelező contextOwnsConnection jelzi, hogy törölje a kapcsolat objektum van szükség, ha töröl egy objektumot kontextusban.
Kapcsolat beállítási megállapodások Code-First
Az utolsó út, hogy ellenőrizzék a kapcsolatot az adatbázissal, hogy cserélje megállapodások használó kód-First. Megállapodás a csatlakozási konfiguráció határozza meg IDbConnectionFactory interfész. Akkor végre ezt a felületet, és átadja azt az eljárást SetDefaultConnectionFactory (DbConfiguration osztály). ezzel felülírva az alapértelmezett megállapodás Code-First.
Alapértelmezett megállapodás végrehajtja SqlConnectionFactory osztályú helyet System.Data.Entity.Infrastructure nevek. Az alapértelmezett viselkedés határozza meg, hogy a szállító adatbázis szolgáltató SQL Server (System.Data.SqlClient összeszerelés), a szerver neve -. \ SQLEXPRESS, és hogy a szerver eléréséhez a Windows-hitelesítés (kiszolgáló elérhető az aktuális felhasználó). Akkor felülírják ezeket a megállapodásokat, például annak érdekében, hogy egyértelműen meghatározza az Entity Framework, hogy szeretne együttműködni a szállító MySQL.
Az alábbi példa bemutatja, hogyan kell felülírják ezeket a megállapodásokat, konfigurációs osztály örökölt DbConfiguration:
Ebben a példában mi változtatni a nevét, a szerver, és adja meg, hogy a hozzáférés az SQL-szerver hitelesítést kell használni, amelyek a felhasználó nevét és jelszavát. Ügyeljen arra, hogy meghatározza a kontextusban az osztály, hogy kihasználja a konfigurációját DbConfigurationType attribútumot. Ahhoz, hogy regisztráljon egy új osztály konfiguráció a Web.config fájlban, a webes alkalmazás a törölni kívánt rész defaultConnectionFactory:
Szintén beállítható a konfiguráció minden osztály keretében a kérelem és ne használják DbConfigurationType attribútumot. Ehhez válassza ki az ingatlan codeConfigurationType részén konfiguráció Entity Framework:
A fenti példában azt mutatja, hogyan kell használni a szabványos SQL Server adatszolgáltató, de megadhat egyéb adatbázis-szállítók, amelyek szükségesek az alkalmazás (MySQL, Oracle, stb)