Vygenerování skriptu databáze
Základní kód konzolové aplikace rozšíříme o volání metod:
- Init() - propojí vytvořenou assembly s definicí persistentních tříd a s databází. Tato metoda nás bude nadále trvale provázet...
- ScriptDatabase() - metoda ScriptDatabase nám vygeneruje databázový script, kterým následně vytvoříme potřebné databázové tabulky a vazby...
Inicializace sestává ze tří příkazů:
- Rivet.ConnectionString - zde uvedeme platný Connection String
- Rivet.UserAssemblyFullPath - zde uvedeme plnou cestu k assembly s definicí tříd
- Rivet.Namespace - zde uvedeme namespace, použité v assembly
Hodnoty načteme ze souboru app.config, kam doplníme sekci appSettings, např.:
<appSettings>
<add key="ConnectionString" value="Data Source=PETRT\SQLEXPRESS; Initial Catalog=RivetTest; User ID=sa; Password=P@ssw0rd" />
<add key="UserAssemblyFullPath" value="D:\Projects\Trials\RivetTest\RivetTest\bin\Debug\Rodokmen.dll" />
<add key="Namespace" value="Rodokmen" />
</appSettings>
using System;
using System.Configuration;
using AVRivet;
using Rodokmen;
namespace RivetTest
{
class Program
{
static void Main(string[] args)
{
Init();
ScriptDatabase();
}
private static void Init()
{
Rivet.ConnectionString = ConfigurationManager.AppSettings["ConnectionString"];
Rivet.UserAssemblyFullPath = ConfigurationManager.AppSettings["UserAssemblyFullPath"];
Rivet.Namespace = ConfigurationManager.AppSettings["Namespace"];
}
private static void ScriptDatabase()
{
string script = Rivet.Instance.ScriptDatabase();
Console.Write(script);
Console.ReadLine();
}
}
}
Výsledkem je skript, kterým následně (třeba pomocí Management Studia) vytvoříme potřebné databázové tabulky a vazby:
Pozn.:
Výpis do konzole zalamuje řádky. Před spuštěním skriptu je třeba chybná zalomení opravit.
Lepší možnost je, nechat si např. na ploše vytořit soubor se skriptem:
private static void ScriptDatabase()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string script = Rivet.Instance.ScriptDatabase();
System.IO.File.WriteAllText(string.Format("{0}\\RivetScript.sql", path), script);
}