Click here to Skip to main content
15,898,036 members
Articles / Programming Languages / XML

DBKeeperNet - Keeps Your DB Schema Up-to-date

Rate me:
Please Sign up or sign in to vote.
4.88/5 (14 votes)
26 Aug 2014BSD4 min read 50.7K   575   89  
An article describing a simple .NET library which simply keeps your database schema up-to-date.
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="AlternativeSqlStatementNotFound" xml:space="preserve">
    <value>Nebyla nalezena žádná odpovídající varianta příkazu pro ovladač: {0}</value>
    <comment>No relevant SQL statement found for driver: {0}</comment>
  </data>
  <data name="CaughtCommonException" xml:space="preserve">
    <value>Během aktualizace byla zachycena obecná vyjímka: {0}</value>
    <comment>A common exception caught during update, will rethrow: {0}</comment>
  </data>
  <data name="CaughtException" xml:space="preserve">
    <value>Během aktualizace byla odchycena vyjímka: {0}</value>
    <comment>An exception caught during update: {0}</comment>
  </data>
  <data name="CheckingPreconditionNotSupported" xml:space="preserve">
    <value>Kontrola podmínky pro spuštění: {0} - není podporováno [výsledek={1}]</value>
    <comment>Checking precondition: {0} - not supported [result={1}]</comment>
  </data>
  <data name="CheckingPreconditionResult" xml:space="preserve">
    <value>Kontrola podmínky pro spuštění: {0} [výsledek={1}]</value>
    <comment>Checking precondition: {0} [result={1}]</comment>
  </data>
  <data name="CheckingStepPrecondition" xml:space="preserve">
    <value>Kontroluji podmínku pro spuštění: {0} [{1}] {{{2}}}</value>
    <comment>Checking precondition: {0} [{1}] {{{2}}}</comment>
  </data>
  <data name="CheckingStepPreconditions" xml:space="preserve">
    <value>Kontrola podmínek pro spuštění kroku '{0}'</value>
    <comment>Checking step '{0}' preconditions</comment>
  </data>
  <data name="CheckingStepPreconditionsResult" xml:space="preserve">
    <value>Výsledek podmínek pro spuštění: {0}</value>
    <comment>Conditions result to: {0}</comment>
  </data>
  <data name="CommonExceptionMessage" xml:space="preserve">
    <value>Během spouštění aktualizací došlo k obecné chybě</value>
    <comment>An error detected during updates execution</comment>
  </data>
  <data name="CustomStepTypeNotFound" xml:space="preserve">
    <value>Datový typ '{0}' implementující uživatelský krok nebyl nalezen</value>
    <comment>Custom step type '{0}' not found</comment>
  </data>
  <data name="DatabaseSetupCheck" xml:space="preserve">
    <value>Provádím kontrolu připravenosti databáze</value>
    <comment>Going to check database setup</comment>
  </data>
  <data name="DatabaseSetupFinished" xml:space="preserve">
    <value>Přípravný skript pro databázi byl dokončen</value>
    <comment>Database setup script finished</comment>
  </data>
  <data name="DatabaseSetupNotNecessary" xml:space="preserve">
    <value>Příprava databáze není třeba</value>
    <comment>No database setup necessary</comment>
  </data>
  <data name="DatabaseSetupToBeExecuted" xml:space="preserve">
    <value>Bude spuštěn skript pro přípravu databáze</value>
    <comment>Database setup script will be executed</comment>
  </data>
  <data name="ExecutingCommandPart" xml:space="preserve">
    <value>Spouštím část {0} příkazu</value>
    <comment>Running part {0} of the command</comment>
  </data>
  <data name="ExecutingUpdatesForAssembly" xml:space="preserve">
    <value>Spouštím aktualizace pro sestavení: {0}</value>
    <comment>Executing updates for assembly: {0}</comment>
  </data>
  <data name="ExecutingUpdatesForAssemblyFinished" xml:space="preserve">
    <value>Aktualizace pro sestavení {0} byly úspěšně dokončeny</value>
    <comment>Updates for assembly executed successfully: {0}</comment>
  </data>
  <data name="FileUpdateNotFound" xml:space="preserve">
    <value>Aktualizační soubor '{0}' nebyl na disku nalezen</value>
    <comment>Update file '{0}' not found on disk</comment>
  </data>
  <data name="FinishedCommandPart" xml:space="preserve">
    <value>Úspěšně dokončena část {0} příkazu</value>
    <comment>Finished part {0} of the command</comment>
  </data>
  <data name="FinishedConfiguredFileUpdate" xml:space="preserve">
    <value>Byla úspěšně dokončena nakonfigurovaná aktualizace '{0}' z disku</value>
    <comment>Successfully executed configured disk file update '{0}'</comment>
  </data>
  <data name="FinishedConfiguredUpdate" xml:space="preserve">
    <value>Byla úspěšně dokončena nakonfigurovaná aktualizace '{0}' pro sestavení '{1}'</value>
    <comment>Successfully executed configured update '{0}' in assembly '{1}'</comment>
  </data>
  <data name="FinishedUpdateStep" xml:space="preserve">
    <value>Dokončen krok: {0} [{1}]</value>
    <comment>Finished step: {0} [{1}]</comment>
  </data>
  <data name="FinishedVersion" xml:space="preserve">
    <value>Úspěšně dokončena aktualizace verze: {0} [{1}]</value>
    <comment>Finished version with success: {0} [{1}]</comment>
  </data>
  <data name="ManifestResourceNotFound" xml:space="preserve">
    <value>Aktualizační skript '{0}' ze sestavení '{1}' nebyl nalezen</value>
    <comment>Manifest resource '{0}' in assembly '{1}' not found</comment>
  </data>
  <data name="StartingConfiguredFileUpdate" xml:space="preserve">
    <value>Bude spuštěn nakonfigurovaný aktualizační soubor '{0}' z disku</value>
    <comment>Going to execute configured update '{0}' from disk file</comment>
  </data>
  <data name="StartingConfiguredUpdate" xml:space="preserve">
    <value>Bude spuštěn nakonfigurovaný aktualizační skript '{0}' ze sestavení '{1}'</value>
    <comment>Going to execute configured update '{0}' in assembly '{1}'</comment>
  </data>
  <data name="StartingUpdateStep" xml:space="preserve">
    <value>Spouštím krok: {0} [{1}]</value>
    <comment>Running step: {0} [{1}]</comment>
  </data>
  <data name="StartingVersion" xml:space="preserve">
    <value>Spouštím verzi: {0} [{1}]</value>
    <comment>Running version: {0} [{1}]</comment>
  </data>
  <data name="StepExceptionRollback" xml:space="preserve">
    <value>Během provádění aktualizace došlo k vyjímce - bude proveden rollback transakce</value>
    <comment>An exception caught during update - executing transaction rollback</comment>
  </data>
  <data name="StepMarkedAsExecuted" xml:space="preserve">
    <value>Do databáze byly uloženy informace o provedení kroku: {0} [{1}]</value>
    <comment>Step executed information saved to database: {0} [{1}]</comment>
  </data>
  <data name="StepSkipped" xml:space="preserve">
    <value>Přeskakuji krok: {0} [{1}]</value>
    <comment>Skipping step: {0} [{1}]</comment>
  </data>
  <data name="UnsupportedUpdateStepType" xml:space="preserve">
    <value>Typ aktualizačního kroku není podporován</value>
    <comment>Unsupported update step type</comment>
  </data>
  <data name="UsingDefaultPreconditions" xml:space="preserve">
    <value>Nebyly definovány žádné podmínky pro spuštění - používám výchozí nastavení kontextu</value>
    <comment>No preconditions declared - using context defaults</comment>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The BSD License


Written By
Team Leader NCR
Czech Republic Czech Republic
I'm software developer since 1996. I started with assembler on Intel 8051 CPUs, during years I was interested in C, C++, Sybase PowerBuilder, PHP, Sybase Anywhere Database, MSSQL server and multiplatform development.

Currently I'm developing in C++ and C# (this is my favorit and I spent some time with MCPD achievement). I'm also interested in design patterns.

Comments and Discussions