private static TableGenerator CastToTableGenerator <T>(INHibernateIdGenerator <T> generator) { TableGenerator result; var nhibernateAdaptor = generator as IdGeneratorNHibernateAdaptor <T>; if (nhibernateAdaptor != null) { result = nhibernateAdaptor.Implementation as TableGenerator; } else { result = generator as TableGenerator; } return(result); }
/// <summary> /// Create the table for the <paramref name="generator"/> supplied. /// </summary> /// <remarks> /// This method is only relevant for generator's that are backed by a table /// </remarks> public static void CreateTableFor <T>(INHibernateIdGenerator <T> generator, IDbConnection openConnection, Dialect dialect) { Check.Require(() => { Demand.The.Param(() => generator).IsNotNull(); Demand.The.Param(() => openConnection).IsNotNull().IsOpen(); }); TableGenerator gen = CastToTableGenerator(generator); if (gen == null) { throw new ArgumentException("Generator does not support a backing store", "generator"); } var dropTableSql = gen.SqlDropString(dialect).Join("\n"); SimpleDataAccess.ExecuteSql(dropTableSql, openConnection); var createIdTableSql = gen.SqlCreateStrings(dialect).Join("\n"); SimpleDataAccess.ExecuteSql(createIdTableSql, openConnection); }
/// <summary> /// Create the table for the <paramref name="generator"/> supplied. /// </summary> /// <remarks> /// This method is only relevant for generator's that are backed by a table /// </remarks> public static void CreateTableFor <T>(INHibernateIdGenerator <T> generator, IDbConnection openConnection) { CreateTableFor(generator, openConnection, new MsSql2005Dialect()); }