internal static bool CheckProviderCompatibility <TOid>(IDbConnection connection, IGeometryFactory geometryFactory, string schema, string tableName, FeatureDataTable model, out MsSqlServer2008Provider <TOid> provider) { MsSqlServer2008Provider <TOid> p = new MsSqlServer2008Provider <TOid>(geometryFactory, connection.ConnectionString, schema, tableName, model.PrimaryKey[0].ColumnName, "Geom"); FeatureDataTable fdt = p.CreateNewTable(); if (FeatureDataTableModelIsCompatible(fdt, model)) { provider = p; return(true); } provider = null; return(false); }
internal static MsSqlServer2008Provider <TOid> Create <TOid>(string connectionString, IGeometryFactory geometryFactory, string schema, string tableName, FeatureDataTable model) { using (IDbConnection conn = new SqlServerDbUtility().CreateConnection(connectionString)) { //using (IDbTransaction tran = conn.BeginTransaction()) //{ // try // { if (!EnsureDbIsSpatiallyEnabled(conn)) { throw new InvalidDatabaseConfigurationException( "Database does not contain spatial components."); } if (CheckIfObjectExists(conn, schema, tableName)) { MsSqlServer2008Provider <TOid> provider; if (CheckProviderCompatibility(conn, geometryFactory, schema, tableName, model, out provider)) { return(provider); } throw new IncompatibleSchemaException( "The table already exists in the database but has an incompatible schema."); } string oidColumn, geometryColumn; CreateDatabaseObjects(conn, schema, tableName, model, out oidColumn, out geometryColumn); MsSqlServer2008Provider <TOid> prov = new MsSqlServer2008Provider <TOid>(geometryFactory, connectionString, schema, tableName, oidColumn, geometryColumn); // tran.Commit(); return(prov); //} //catch //{ // tran.Rollback(); // throw; //} //} } }