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);
        }