public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = @"<LogicalSchema Version = ""1""><DatabaseName>Database1</DatabaseName></LogicalSchema>";

            IDatabase db = new DatabaseDeserialisationScheme().Deserialise(xml);

            Assert.That(db.Name, Is.EqualTo("Database1"));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = When_Serialising_An_Empty_Table.BasicTableXml;
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);

            ITable table = new DatabaseDeserialisationScheme().ProcessTableNode(document.DocumentElement);

            // All of the table stuff is tested in the tests for IScriptObject
            Assert.That(table.Name, Is.EqualTo("Entity1"));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = When_Serialising_An_Empty_Key.BasicKeyXml;
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);

            IKey key = new DatabaseDeserialisationScheme().ProcessKeyNode(document.DocumentElement, new Table(), new Database(""));

            // All of the other key stuff is tested in the tests for IScriptObject
            Assert.That(key.Keytype, Is.EqualTo(DatabaseKeyType.Primary));
        }
        public void Outputs_This()
        {
            IDatabaseLoader loader = new DatabaseDeserialisationScheme().DeserialiseConnectionInformation(
                Specs_For_Serialisation_Of_Database_Connection_Information.When_Given_A_SQL_CE_Connector.ExpectedXml.GetXmlDocRoot());

            Assert.That(loader, Is.Not.Null);
            Assert.That(loader, Is.TypeOf(typeof(SQLCEDatabaseLoader)));
            Assert.That(loader.DatabaseConnector, Is.Not.Null);

            var connector = (SQLCEDatabaseConnector)loader.DatabaseConnector;
            Assert.That(connector.Filename, Is.EqualTo("database.sdf"));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = When_Serialising_Index_With_All_Information_Set.FullIndexXml;
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);

            IIndex index = new DatabaseDeserialisationScheme().ProcessIndexNode(document.DocumentElement, new Table(), new Database(""));

            // All of the other key stuff is tested in the tests for IScriptObject
            Assert.That(index.Datatype, Is.EqualTo(DatabaseIndexType.PrimaryKey));
            Assert.That(index.IsClustered, Is.True);
            Assert.That(index.IsUnique, Is.True);
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = When_Serialising_Key_With_Columns.KeyWithColumnsXml;
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);

            Table table1 = new Table("Table1");
            table1.AddColumn(new Column("Column1"));

            IKey key = new DatabaseDeserialisationScheme().ProcessKeyNode(document.DocumentElement, table1, new Database(""));

            Assert.That(key.Columns, Has.Count(1));
            Assert.That(key.Columns[0], Is.SameAs(table1.Columns[0]));
        }
        private static TimeSpan RunDeserialisationTest(int numTables, int numColumns)
        {
            IDatabase db = new Database("Test Database", ArchAngel.Providers.EntityModel.Controller.DatabaseLayer.DatabaseTypes.SQLServer2005);
            SetupDatabase(db, numTables, numColumns);

            string xml = db.Serialise(new DatabaseSerialisationScheme());

            var scheme = new DatabaseDeserialisationScheme();

            DateTime start = DateTime.Now;

            scheme.Deserialise(xml);

            return DateTime.Now - start;
        }
        public void Outputs_This()
        {
            IDatabaseLoader loader = new DatabaseDeserialisationScheme().DeserialiseConnectionInformation(
                Specs_For_Serialisation_Of_Database_Connection_Information.When_Given_A_SQL_Server_2005_Connector.ExpectedXml.GetXmlDocRoot());

            Assert.That(loader, Is.Not.Null);
            Assert.That(loader, Is.TypeOf(typeof(SQLServer2005DatabaseLoader)));
            Assert.That(loader.DatabaseConnector, Is.Not.Null);

            var connector = (SQLServer2005DatabaseConnector)loader.DatabaseConnector;
            var helper = connector.ConnectionInformation;
            Assert.That(helper.ServerName, Is.EqualTo("server"));
            Assert.That(helper.DatabaseName, Is.EqualTo("database"));
            Assert.That(helper.UserName, Is.EqualTo("username"));
            Assert.That(helper.UseIntegratedSecurity, Is.False);
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = When_Serialising_Key_With_A_Referenced_Key.KeyWithReferencedKeyXml;
            XmlDocument document = new XmlDocument();
            document.LoadXml(xml);

            Database db = new Database("Database1");
            Table table1 = new Table("Table1");
            Table table2 = new Table("Table2");
            db.AddTable(table1);
            db.AddTable(table2);

            IKey key2 = new Key("ForeignKey") { Parent = table2 };
            table2.AddKey(key2);

            var scheme = new DatabaseDeserialisationScheme();
            IKey key = scheme.ProcessKeyNode(document.DocumentElement, table1, db);
            scheme.ProcessReferencedKey(key, document.DocumentElement, db);

            Assert.That(key.ReferencedKey, Is.SameAs(key2));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            IDatabase database = new Database("DB1");
            var table1 = new Table("Table1");
            var table2 = new Table("Table2");
            var key1 = new Key("K1", DatabaseKeyType.Primary);
            var key2 = new Key("ForeignKey", DatabaseKeyType.Foreign);

            table1.AddKey(key1);
            table2.AddKey(key2);

            database.AddTable(table1);
            database.AddTable(table2);

            Relationship rel = new DatabaseDeserialisationScheme().DeserialiseRelationship(FullRelationshipXml.GetXmlDocRoot(), database);

            Assert.That(rel.Identifier, Is.EqualTo(new Guid("11111111-1111-1111-1111-111111111111")));
            Assert.That(rel.Name, Is.EqualTo("Relation1"));
            Assert.That(rel.PrimaryTable, Is.SameAs(table1));
            Assert.That(rel.ForeignTable, Is.SameAs(table2));
            Assert.That(rel.PrimaryKey, Is.SameAs(key1));
            Assert.That(rel.ForeignKey, Is.SameAs(key2));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            #region Xml
            const string xml =
            @"<LogicalSchema Version = ""1"">
            <DatabaseName>Database1</DatabaseName>
            <Table>
            <Name>Table1</Name>
            <NamePlural />
            <Description />
            <Enabled>False</Enabled>
            <IsUserDefined>False</IsUserDefined>
            <UID>00000000-0000-0000-0000-000000000000</UID>
            <Keys>
              <Key>
            <Name>FK_Table1</Name>
            <NamePlural />
            <Description />
            <Enabled>False</Enabled>
            <IsUserDefined>False</IsUserDefined>
            <UID>00000000-0000-0000-0000-000000000000</UID>
            <IsUnique>False</IsUnique>
            <Keytype>Foreign</Keytype>
            <ReferencedKey>
              <TableName>Table2</TableName>
              <KeyName>PK_Table2</KeyName>
            </ReferencedKey>
            <Columns>
              <ColumnName>ColumnT11</ColumnName>
            </Columns>
              </Key>
            </Keys>
            <Columns>
              <Column>
            <Name>ColumnT11</Name>
            <NamePlural />
            <Description />
            <Enabled>False</Enabled>
            <IsUserDefined>False</IsUserDefined>
            <UID>00000000-0000-0000-0000-000000000000</UID>
            <Datatype>int</Datatype>
            <Default />
            <InPrimaryKey>False</InPrimaryKey>
            <IsCalculated>False</IsCalculated>
            <IsComputed>False</IsComputed>
            <IsIdentity>False</IsIdentity>
            <IsNullable>True</IsNullable>
            <IsReadOnly>False</IsReadOnly>
            <IsUnique>True</IsUnique>
            <OrdinalPosition>3</OrdinalPosition>
            <Precision>10</Precision>
            <Scale>0</Scale>
            <Size>0</Size>
              </Column>
            </Columns>
              </Table>
              <Table>
            <Name>Table2</Name>
            <NamePlural />
            <Description />
            <Enabled>False</Enabled>
            <IsUserDefined>False</IsUserDefined>
            <UID>00000000-0000-0000-0000-000000000000</UID>
            <Keys>
              <Key>
            <Name>PK_Table2</Name>
            <NamePlural />
            <Description />
            <Enabled>False</Enabled>
            <IsUserDefined>False</IsUserDefined>
            <UID>00000000-0000-0000-0000-000000000000</UID>
            <IsUnique>True</IsUnique>
            <Keytype>Primary</Keytype>
            <Columns>
              <ColumnName>Column1</ColumnName>
            </Columns>
              </Key>
            </Keys>
            <Columns>
              <Column>
            <Name>Column1</Name>
            <NamePlural />
            <Description />
            <Enabled>False</Enabled>
            <IsUserDefined>False</IsUserDefined>
            <UID>00000000-0000-0000-0000-000000000000</UID>
            <Datatype>int</Datatype>
            <Default />
            <InPrimaryKey>True</InPrimaryKey>
            <IsCalculated>False</IsCalculated>
            <IsComputed>False</IsComputed>
            <IsIdentity>False</IsIdentity>
            <IsNullable>False</IsNullable>
            <IsReadOnly>False</IsReadOnly>
            <IsUnique>True</IsUnique>
            <OrdinalPosition>1</OrdinalPosition>
            <Precision>10</Precision>
            <Scale>0</Scale>
            <Size>0</Size>
              </Column>
            </Columns>
              </Table>
            </LogicalSchema>";
            #endregion
            IDatabase db = new DatabaseDeserialisationScheme().Deserialise(xml);

            Assert.That(db.Tables, Has.Count(2));

            ITable table1 = db.Tables[0];
            Assert.That(table1.Name, Is.EqualTo("Table1"));
            Assert.That(table1.Keys, Has.Count(1));
            Assert.That(table1.Keys[0].Name, Is.EqualTo("FK_Table1"));
            Assert.That(table1.Keys[0].Keytype, Is.EqualTo(DatabaseKeyType.Foreign));

            ITable table2 = db.Tables[1];
            Assert.That(table2.Name, Is.EqualTo("Table2"));
            Assert.That(table2.Keys, Has.Count(1));
            Assert.That(table2.Keys[0].Name, Is.EqualTo("PK_Table2"));
            Assert.That(table2.Keys[0].Keytype, Is.EqualTo(DatabaseKeyType.Primary));

            Assert.That(table1.Keys[0].ReferencedKey, Is.SameAs(table2.Keys[0]));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml =
            @"<LogicalSchema Version = ""1"">" +
                "<DatabaseName>Database1</DatabaseName>" +
                "<Table>" + When_Serialising_An_Empty_Table.ScriptBaseXml +
                    "<Keys>" + When_Serialising_An_Empty_Key.BasicKeyXml + "</Keys>" +
                    "<Indexes>" + When_Serialising_An_Empty_Index.BasicIndexXml + "</Indexes>" +
                "</Table>"+
            "</LogicalSchema>";

            IDatabase db = new DatabaseDeserialisationScheme().Deserialise(xml);

            Assert.That(db.Tables, Has.Count(1));
            ITable table = db.Tables[0];
            Assert.That(table.Name, Is.EqualTo("Entity1"));
            Assert.That(table.Keys, Has.Count(1));
            Assert.That(table.Keys[0].Name, Is.EqualTo("PrimaryKey"));
            Assert.That(table.Keys[0].Parent, Is.SameAs(table));
            Assert.That(table.Indexes, Has.Count(1));
            Assert.That(table.Indexes, Has.Count(1));
            Assert.That(table.Indexes[0].Name, Is.EqualTo("Index1"));
            Assert.That(table.Indexes[0].Parent, Is.SameAs(table));
        }
        public void It_Should_Be_Reconstructed_Correctly()
        {
            const string xml = @"<LogicalSchema Version = ""1""><DatabaseName>Database1</DatabaseName>" +
                When_Serialising_An_Empty_Table.BasicTableXml +
                "</LogicalSchema>";

            IDatabase db = new DatabaseDeserialisationScheme().Deserialise(xml);

            Assert.That(db.Tables, Has.Count(1));
            // Make sure the correct table was loaded up.
            Assert.That(db.Tables[0].Name, Is.EqualTo("Entity1"));
        }
Example #14
0
        public override void Open(string folder)
        {
            string databaseFilePath = Path.Combine(folder, DatabaseFilename);
            string entityFilePath = Path.Combine(folder, EntitiesFilename);
            string mappingsFilePath = Path.Combine(folder, MappingsFilename);

            if (File.Exists(databaseFilePath) == false)
                throw new ArgumentException("Database definition file missing.");
            if (File.Exists(entityFilePath) == false)
                throw new ArgumentException("Entity definition file missing.");
            if (File.Exists(mappingsFilePath) == false)
                throw new ArgumentException("Mapping definition file missing.");

            string databaseXml = File.ReadAllText(databaseFilePath);
            string entitiesXml = File.ReadAllText(entityFilePath);
            string mappingsXml = File.ReadAllText(mappingsFilePath);

            try
            {
                var database = new DatabaseDeserialisationScheme().Deserialise(databaseXml);
                var entitySet = new EntitySetDeserialisationScheme().DeserialiseEntitySet(entitiesXml, database);

                MappingSet = new MappingSetDeserialisationScheme().DeserialiseMappingSet(mappingsXml, database, entitySet);

                // If everything loaded correctly, copy the database file away so we can use it to figure out what the user has changed
                // in this session.
                loadedDatabaseXML = databaseXml;
            }
            catch (Exception e)
            {
                log.ErrorFormat("Error opening Entity Model Provider files on disk");
                log.Error(e.Message);
            #if DEBUG
                if (MessageBox.Show("An error occurred while opening the project files.\nDo you want to ignore the invalid model on disk? See logs for exception", "Error",
                                MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
                {
                    Clear();
                }
                else
                {
                    throw;
                }
            #endif
            }
        }