SqlMetal.exe (kódgenerálási eszköz)
Az SqlMetal parancssori eszköz létrehozza a LINQ és a .NET-keretrendszer SQL-összetevőjének kódját és leképezését. A jelen témakör későbbi részében megjelenő beállítások alkalmazásával utasíthatja az SqlMetalt, hogy hajtsa végre a következő műveleteket:
Adatbázisból hozzon létre forráskódot és leképezési attribútumokat vagy egy leképezési fájlt.
Adatbázisból hozzon létre egy köztes adatbázis-korrektúranyelvet (.dbml) a testreszabáshoz.
.dbml-fájlból hozzon létre kód- és leképezési attribútumokat vagy leképezési fájlt.
Ez az eszköz automatikusan telepítve van a Visual Studio 2019 és korábbi verzióival. A fájl alapértelmezés szerint a következő helyen található: %ProgramFiles%\Microsoft SDKs\Windows[version]\bin. Ha nem telepíti a Visual Studiót, a Windows SDK letöltésével is lekérheti az SQLMetal-fájlt.
Feljegyzés
A Visual Studiót használó fejlesztők az Objektum relációs tervezővel is létrehozhatnak entitásosztályokat. A parancssori megközelítés jól méretez nagy adatbázisok esetében. Mivel az SqlMetal parancssori eszköz, buildelési folyamatban is használhatja.
Az eszköz futtatásához használja a Visual Studio fejlesztői parancssorát vagy a Visual Studio Developer PowerShellt. A parancssorban adja meg a következő parancsot:
sqlmetal [options] [<input file>]
Beállítások
A legújabb beállításlista megtekintéséhez írjon be sqlmetal /?
egy parancssort a telepített helyről.
Kapcsolati beállítások
Lehetőség | Leírás |
---|---|
/server: <name> | Megadja az adatbázis-kiszolgáló nevét. |
/database: <name> | A kiszolgálón található adatbáziskatalógust adja meg. |
/user: <name> | Megadja a bejelentkezési felhasználó azonosítóját. Alapértelmezett érték: Windows-hitelesítés használata. |
/password: <password> | Megadja a bejelentkezési jelszót. Alapértelmezett érték: Windows-hitelesítés használata. |
/conn: <kapcsolati sztring> | Megadja az adatbázis-kapcsolati sztring. A /server, /database, /user vagy /password beállításokkal nem használható. Ne adja meg a fájlnevet a kapcsolati sztring. Ehelyett adja hozzá a fájlnevet a parancssorhoz bemeneti fájlként. A következő sor például a "c:\northwnd.mdf" értéket adja meg bemeneti fájlként: sqlmetal /code:"c:\northwind.cs" /language:csharp "c:\northwnd.mdf". |
/időtúllépés: <másodperc> | Időtúllépési értéket ad meg, amikor az SqlMetal hozzáfér az adatbázishoz. Alapértelmezett érték: 0 (azaz nincs időkorlát). |
Kinyerési lehetőségek
Lehetőség | Leírás |
---|---|
/Kilátás nyílik | Kinyeri az adatbázisnézeteket. |
/Funkciók | Kinyeri az adatbázisfüggvényeket. |
/sprocs | Kinyeri a tárolt eljárásokat. |
Kimeneti beállítások
Lehetőség | Leírás |
---|---|
/dbml [:file] | Kimenet küldése .dbml néven. A /map beállítással nem használható. |
/code [:file] | Kimenetet küld forráskódként. A /dbml beállítással nem használható. |
/map [:file] | Attribútumok helyett XML-megfeleltetési fájlt hoz létre. A /dbml beállítással nem használható. |
Egyéb
Lehetőség | Leírás |
---|---|
/language: <language> | Megadja a forráskód nyelvét. Érvényes <nyelv>: vb, csharp. Alapértelmezett érték: A kódfájlnév bővítményéből származik. |
/namespace: <name> | Megadja a létrehozott kód névterét. Alapértelmezett érték: nincs névtér. |
/context: <type> | Az adatkörnyezet osztályának nevét adja meg. Alapértelmezett érték: Az adatbázis nevéből származik. |
/entitybase: <type> | Megadja az entitásosztályok alaposztályát a létrehozott kódban. Alapértelmezett érték: Az entitások nem rendelkeznek alaposztályokkal. |
/pluralize | Automatikusan pluralizálja vagy szingularizálja az osztály- és tagneveket. Ez a lehetőség csak az amerikai angol verzióban érhető el. |
/szerializálás: <beállítás> | Szerializálható osztályokat hoz létre. Érvényes <beállítás>: Nincs, Egyirányú. Alapértelmezett érték: Nincs. További információ: Szerializálás. |
Bemeneti fájl
Lehetőség | Leírás |
---|---|
<bemeneti fájl> | Sql Server Express .mdf fájlt, SQL Server Compact 3.5 .sdf fájlt vagy .dbml köztes fájlt határoz meg. |
Megjegyzések
Az SqlMetal funkció valójában két lépésből áll:
Az adatbázis metaadatainak kinyerése .dbml fájlba.
Kódkimenetfájl létrehozása.
A megfelelő parancssori beállítások használatával létrehozhat Visual Basic- vagy C#-forráskódot, vagy létrehozhat egy XML-megfeleltetési fájlt.
Ha egy .mdf fájlból szeretné kinyerni a metaadatokat, minden egyéb beállítás után meg kell adnia a .mdf fájl nevét.
Ha nincs megadva /kiszolgáló , a rendszer a localhost/sqlexpress függvényt feltételezi.
A Microsoft SQL Server 2005 kivételt eredményez, ha az alábbi feltételek közül egy vagy több teljesül:
Az SqlMetal megpróbál kinyerni egy tárolt eljárást, amely meghívja magát.
A tárolt eljárás, függvény vagy nézet beágyazási szintje meghaladja a 32-t.
Az SqlMetal elkapja ezt a kivételt, és figyelmeztetésként jelenti.
Bemeneti fájlnév megadásához adja hozzá a nevet a parancssorhoz bemeneti fájlként. A kapcsolati sztring (a /conn beállítás használata) nem támogatja a fájlnevet.
Példák
Hozzon létre egy .dbml-fájlt, amely kinyert SQL-metaadatokat tartalmaz:
sqlmetal /server:myserver /database:northwind /dbml:mymeta.dbml
Hozzon létre egy .dbml-fájlt, amely egy .mdf fájlból kinyert SQL-metaadatokat tartalmaz az SQL Server Express használatával:
sqlmetal /dbml:mymeta.dbml mydbfile.mdf
Hozzon létre egy .dbml-fájlt, amely az SQL Server Expressből kinyert SQL-metaadatokat tartalmazza:
sqlmetal /server:.\sqlexpress /dbml:mymeta.dbml /database:northwind
Forráskód létrehozása .dbml metaadatfájlból:
sqlmetal /namespace:nwind /code:nwind.cs /language:csharp mymetal.dbml
Forráskód létrehozása közvetlenül az SQL-metaadatokból:
sqlmetal /server:myserver /database:northwind /namespace:nwind /code:nwind.cs /language:csharp
Feljegyzés
Ha a /pluralize lehetőséget használja a Northwind mintaadatbázissal, jegyezze fel az alábbi viselkedést. Amikor az SqlMetal sortípusneveket készít a táblákhoz, a táblanevek egyesével jelennek meg. Amikor tulajdonságokat hoz a DataContext táblákhoz, a táblanevek többes számban jelennek meg. Véletlenül a Northwind mintaadatbázis táblái már többes számban vannak. Ezért nem látja, hogy ez a rész működik. Bár az adatbázistáblák elnevezése gyakran előfordul egyesével, a .NET-ben is gyakori eljárás a gyűjtemények többes számának elnevezése.