Esempio n. 1
0
        public void GetStoreSchemaDescriptionDoesNotThrowForServer50OrGreater()
        {
            MySqlProviderManifest manifest = new MySqlProviderManifest(st.Version.Major + "." + st.Version.Minor);

            using (XmlReader reader = manifest.GetInformation(DbXmlEnabledProviderManifest.StoreSchemaDefinition))
            {
                Assert.NotNull(reader);
            }
        }
 public void CanMapByteTypeToUTinyInt()
 {
     using (MySqlConnection connection = new MySqlConnection(st.ConnectionString))
     {
         MySqlProviderManifest pm = new MySqlProviderManifest(st.Version.ToString());
         TypeUsage             tu = TypeUsage.CreateDefaultTypeUsage(
             PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Byte));
         TypeUsage result = pm.GetStoreType(tu);
         Assert.Equal("utinyint", result.EdmType.Name);
     }
 }
        public void AddColumnOperationMigration()
        {
            var migrationOperations = new List <MigrationOperation>();

            if (ProviderManifest == null)
            {
                ProviderManifest = new MySqlProviderManifest(st.Version.ToString());
            }

            TypeUsage tu     = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32));
            TypeUsage result = ProviderManifest.GetStoreType(tu);

            var intColumn = new ColumnModel(PrimitiveTypeKind.Int32, result)
            {
                Name       = "TotalPosts",
                IsNullable = false
            };

            var addColumnMigratioOperation = new AddColumnOperation("Blogs", intColumn);

            migrationOperations.Add(addColumnMigratioOperation);

            using (BlogContext context = new BlogContext())
            {
                if (context.Database.Exists())
                {
                    context.Database.Delete();
                }
                context.Database.Create();

                using (MySqlConnection conn = new MySqlConnection(context.Database.Connection.ConnectionString))
                {
                    if (conn.State == System.Data.ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    Assert.Equal(true, GenerateAndExecuteMySQLStatements(migrationOperations));

                    MySqlCommand    query  = new MySqlCommand("Select Column_name, Is_Nullable, Data_Type from information_schema.Columns where table_schema ='" + conn.Database + "' and table_name = 'Blogs' and column_name ='TotalPosts'", conn);
                    MySqlDataReader reader = query.ExecuteReader();
                    while (reader.Read())
                    {
                        Assert.Equal("TotalPosts", reader[0].ToString());
                        Assert.Equal("NO", reader[1].ToString());
                        Assert.Equal("int", reader[2].ToString());
                    }
                    reader.Close();
                    conn.Close();
                }
            }
        }
        /// <summary>
        /// Creates a table named Posts
        /// and columns int PostId, string Title, string Body
        /// </summary>
        /// <returns></returns>

        private CreateTableOperation CreateTableOperation()
        {
            TypeUsage tu;
            TypeUsage result;

            if (ProviderManifest == null)
            {
                ProviderManifest = new MySqlProviderManifest(st.Version.ToString());
            }

            var createTableOperation = new CreateTableOperation("Posts");

            //Column model for int IdPost
            tu     = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32));
            result = ProviderManifest.GetStoreType(tu);

            var intColumn = new ColumnModel(PrimitiveTypeKind.Int32, result)
            {
                Name       = "PostId",
                IsNullable = false,
                IsIdentity = true
            };

            createTableOperation.Columns.Add(intColumn);

            //Column model for string
            tu     = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));
            result = ProviderManifest.GetStoreType(tu);

            var stringColumnTitle = new ColumnModel(PrimitiveTypeKind.String, result)
            {
                Name       = "Title",
                IsNullable = false
            };

            var stringColumnBody = new ColumnModel(PrimitiveTypeKind.String, result)
            {
                Name       = "Body",
                IsNullable = true
            };

            createTableOperation.Columns.Add(stringColumnTitle);
            createTableOperation.Columns.Add(stringColumnBody);
            var primaryKey = new AddPrimaryKeyOperation();

            primaryKey.Columns.Add("PostId");

            createTableOperation.PrimaryKey = primaryKey;

            return(createTableOperation);
        }
Esempio n. 5
0
        public void GetStoreSchemaDescriptionDoesNotThrowForServer50OrGreater()
        {
            if (Version < new Version(5, 0))
            {
                return;
            }

            MySqlProviderManifest manifest = new MySqlProviderManifest(Version.Major + "." + Version.Minor);

            using (XmlReader reader = manifest.GetInformation(DbProviderManifest.StoreSchemaDefinition))
            {
                Assert.IsNotNull(reader);
            }
        }
        public void GetStoreSchemaDescriptionDoesNotThrowForServer50OrGreater()
        {
            if (st.Version < new Version(5, 0))
            {
                return;
            }

            MySqlProviderManifest manifest = new MySqlProviderManifest(st.Version.Major + "." + st.Version.Minor);

#if !EF6
            using (XmlReader reader = manifest.GetInformation(DbProviderManifest.StoreSchemaDefinition))
#else
            using (XmlReader reader = manifest.GetInformation(DbXmlEnabledProviderManifest.StoreSchemaDefinition))
#endif
            {
                Assert.NotNull(reader);
            }
        }
        public void TestingMaxLengthWithFixedLenghtTrueFacets()
        {
            using (MySqlConnection connection = new MySqlConnection(st.ConnectionString))
            {
                MySqlProviderManifest pm = new MySqlProviderManifest(st.Version.ToString());
                TypeUsage             tu = TypeUsage.CreateStringTypeUsage(
                    PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), false, true);
                TypeUsage result = pm.GetStoreType(tu);
                Assert.Equal("char", result.EdmType.Name);

                tu = TypeUsage.CreateStringTypeUsage(
                    PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), false, true, Int32.MaxValue);
                result = pm.GetStoreType(tu);
                Assert.Equal("char", result.EdmType.Name);

                tu = TypeUsage.CreateStringTypeUsage(
                    PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), false, true, 70000);
                result = pm.GetStoreType(tu);
                Assert.Equal("char", result.EdmType.Name);
            }
        }
        public void TestingMaxLengthFacet()
        {
            using (MySqlConnection connection = new MySqlConnection(st.GetConnectionString(true)))
            {
                MySqlProviderManifest pm = new MySqlProviderManifest(st.Version.ToString());
                TypeUsage             tu = TypeUsage.CreateStringTypeUsage(
                    PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), false, false);
                TypeUsage result = pm.GetStoreType(tu);
                Assert.Equal("longtext", result.EdmType.Name);

                tu = TypeUsage.CreateStringTypeUsage(
                    PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), false, false, Int32.MaxValue);
                result = pm.GetStoreType(tu);
                Assert.Equal("longtext", result.EdmType.Name);

                tu = TypeUsage.CreateStringTypeUsage(
                    PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String), false, false, 70000);
                result = pm.GetStoreType(tu);
                Assert.Equal("mediumtext", result.EdmType.Name);
            }
        }
        public void CreateForeignKeyOperation()
        {
            var migrationOperations = new List <MigrationOperation>();

            // create dependant table Posts
            var createTableOperation = CreateTableOperation();

            migrationOperations.Add(createTableOperation);

            // Add column BlogId to create the constraints

            if (ProviderManifest == null)
            {
                ProviderManifest = new MySqlProviderManifest(st.Version.ToString());
            }

            TypeUsage tu     = TypeUsage.CreateDefaultTypeUsage(PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.Int32));
            TypeUsage result = ProviderManifest.GetStoreType(tu);

            var intColumn = new ColumnModel(PrimitiveTypeKind.Int32, result)
            {
                Name       = "BlogId",
                IsNullable = false
            };

            var addColumnMigratioOperation = new AddColumnOperation("Posts", intColumn);

            migrationOperations.Add(addColumnMigratioOperation);

            // create constrain object
            var createForeignkeyOperation = new AddForeignKeyOperation();

            createForeignkeyOperation.Name           = "FKBlogs";
            createForeignkeyOperation.DependentTable = "Posts";
            createForeignkeyOperation.DependentColumns.Add("BlogId");
            createForeignkeyOperation.CascadeDelete  = true;
            createForeignkeyOperation.PrincipalTable = "Blogs";
            createForeignkeyOperation.PrincipalColumns.Add("BlogId");

            //create index to use
            migrationOperations.Add(createForeignkeyOperation.CreateCreateIndexOperation());

            migrationOperations.Add(createForeignkeyOperation);


            using (BlogContext context = new BlogContext())
            {
                if (context.Database.Exists())
                {
                    context.Database.Delete();
                }
                context.Database.Create();

                Assert.Equal(true, GenerateAndExecuteMySQLStatements(migrationOperations));

                using (var conn = new MySqlConnection(context.Database.Connection.ConnectionString))
                {
                    if (conn.State == System.Data.ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    // check for foreign key creation
                    MySqlCommand query = new MySqlCommand("select Count(*) from information_schema.table_constraints where constraint_type = 'foreign key' and constraint_schema = '" + conn.Database + "' and constraint_name = 'FKBlogs'", conn);
                    int          rows  = Convert.ToInt32(query.ExecuteScalar());
                    Assert.Equal(1, rows);
                    // check for table creation
                    query = new MySqlCommand("select Count(*) from information_schema.Tables WHERE `table_name` = 'Posts' and `table_schema` = '" + conn.Database + "' ", conn);
                    rows  = Convert.ToInt32(query.ExecuteScalar());
                    Assert.Equal(1, rows);
                    conn.Close();
                }

                // Test fix for
                MySqlConnection con = GetConnectionFromContext(context);
                con.Open();
                try
                {
                    MySqlCommand cmd = new MySqlCommand("show create table `posts`", con);
                    using (MySqlDataReader r = cmd.ExecuteReader())
                    {
                        r.Read();
                        string sql = r.GetString(1);
                        Assert.True(sql.IndexOf(
                                        " CONSTRAINT `FKBlogs` FOREIGN KEY (`BlogId`) REFERENCES `blogs` (`BlogId`) ON DELETE CASCADE ON UPDATE CASCADE",
                                        StringComparison.OrdinalIgnoreCase) != -1);
                    }
                }
                finally
                {
                    con.Close();
                }
            }
        }