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