better c# export, still TODO

This commit is contained in:
Mystikfluu 2023-04-15 15:27:12 +02:00
parent dfb92358fc
commit aca4c8d933

View File

@ -87,30 +87,30 @@ public class C4 {
this.databaseName = this.databaseName.toLowerCase(); this.databaseName = this.databaseName.toLowerCase();
this.sqlScript = new StringBuffer(); sqlScript = new StringBuffer();
this.sqlScript.append("-- #######################################################\n"); sqlScript.append("-- #######################################################\n");
this.sqlScript.append("-- auto generated ddl-script ###########################\n"); sqlScript.append("-- auto generated ddl-script ###########################\n");
this.sqlScript.append("-- generated sql creation script for ER model\n"); sqlScript.append("-- generated sql creation script for ER model\n");
this.sqlScript.append("-- switch autocommit off\n"); sqlScript.append("-- switch autocommit off\n");
this.sqlScript.append("set implicit_transactions off;\n"); sqlScript.append("set implicit_transactions off;\n");
this.sqlScript.append("-- database-#############################################\n"); sqlScript.append("-- database-#############################################\n");
this.sqlScript.append("use master;\n"); sqlScript.append("use master;\n");
this.sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n"); sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n");
this.sqlScript.append("create database ").append(this.databaseName).append(";").append("\n"); sqlScript.append("create database ").append(this.databaseName).append(";").append("\n");
this.sqlScript.append("go \n"); sqlScript.append("go \n");
this.sqlScript.append("use ").append(this.databaseName).append(";").append("\n"); sqlScript.append("use ").append(this.databaseName).append(";").append("\n");
this.sqlScript.append("-- tables-#################################################\n"); sqlScript.append("-- tables-#################################################\n");
for (T1 table : this.tables) { for (T1 table : this.tables) {
this.sqlScript = this.sqlScript.append("-- table ").append(table.getTablename()).append("\n"); sqlScript = sqlScript.append("-- table ").append(table.getTablename()).append("\n");
this.sqlScript = this.sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n"); sqlScript = sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n");
StringBuilder keypart = new StringBuilder("primary key("); StringBuilder keypart = new StringBuilder("primary key(");
int autoincrementCounter = 0; int autoincrementCounter = 0;
for (C3 column : table.getSkjdfhgdskjf674534()) { for (C3 column : table.getSkjdfhgdskjf674534()) {
keypart.append(column.isKey() ? (column.getColumnName() + ",") : ""); keypart.append(column.isKey() ? (column.getColumnName() + ",") : "");
this.sqlScript = this.sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append(( sqlScript = sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append((
!column.isKey() && !column.isNullable()) ? " not null" : "").append(column.isAutoincrement() ? (" identity (" + column.getAutoincrementStartAt() + ",1) ") : "").append(column.isUnique() ? " unique" : "").append(",").append("\n"); !column.isKey() && !column.isNullable()) ? " not null" : "").append(column.isAutoincrement() ? (" identity (" + column.getAutoincrementStartAt() + ",1) ") : "").append(column.isUnique() ? " unique" : "").append(",").append("\n");
if (column.isAutoincrement()) { if (column.isAutoincrement()) {
autoincrementCounter++; autoincrementCounter++;
@ -120,8 +120,8 @@ public class C4 {
keypart = new StringBuilder(keypart.substring(0, keypart.length() - 1)); keypart = new StringBuilder(keypart.substring(0, keypart.length() - 1));
keypart.append(")").append("\n"); keypart.append(")").append("\n");
this.sqlScript = this.sqlScript.append(addChars()).append(keypart).append(")"); sqlScript = sqlScript.append(addChars()).append(keypart).append(")");
this.sqlScript.append(";\n\n"); sqlScript.append(";\n\n");
if (autoincrementCounter != 1) { if (autoincrementCounter != 1) {
if (autoincrementCounter > 1) { if (autoincrementCounter > 1) {
@ -137,11 +137,11 @@ public class C4 {
} catch (ZZ20 ex) { } catch (ZZ20 ex) {
throw new ZZ20(ex.getMessage()); throw new ZZ20(ex.getMessage());
} }
createInsertStatements(this.sqlScript, singeInserts, false); createInsertStatements(sqlScript, singeInserts, false);
} }
this.sqlScript.append("\n-- foreign keys-#################################################\n"); sqlScript.append("\n-- foreign keys-#################################################\n");
for (T1 table : this.tables) { for (T1 table : this.tables) {
ArrayList<C3> fkColumns = new ArrayList<>(); ArrayList<C3> fkColumns = new ArrayList<>();
@ -168,9 +168,9 @@ public class C4 {
} }
} }
for (C3 col : equalColumnsBecauseRecursive) { for (C3 col : equalColumnsBecauseRecursive) {
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n"); sqlScript = sqlScript.append("alter table ").append(table.getTablename()).append("\n");
this.sqlScript.append("add foreign key ("); sqlScript.append("add foreign key (");
this.sqlScript = this.sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete no action on update no action;\n"); sqlScript = sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete no action on update no action;\n");
tableNamesInfkColumns.remove(col.getReferencesTo().tablename()); tableNamesInfkColumns.remove(col.getReferencesTo().tablename());
} }
@ -178,8 +178,8 @@ public class C4 {
for (String tableName : tableNamesInfkColumns) { for (String tableName : tableNamesInfkColumns) {
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n"); sqlScript = sqlScript.append("alter table ").append(table.getTablename()).append("\n");
this.sqlScript.append("add foreign key ("); sqlScript.append("add foreign key (");
StringBuilder columnsOrig = new StringBuilder(); StringBuilder columnsOrig = new StringBuilder();
StringBuilder refColumns = new StringBuilder(" references " + tableName + "("); StringBuilder refColumns = new StringBuilder(" references " + tableName + "(");
for (C3 fkcolumn : fkColumns) { for (C3 fkcolumn : fkColumns) {
@ -192,15 +192,15 @@ public class C4 {
columnsOrig.append(")"); columnsOrig.append(")");
refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1)); refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1));
refColumns.append(")"); refColumns.append(")");
this.sqlScript.append(columnsOrig).append(refColumns).append(" on delete no action on update no action;\n"); sqlScript.append(columnsOrig).append(refColumns).append(" on delete no action on update no action;\n");
} }
this.sqlScript.replace(this.sqlScript.length() - 2, this.sqlScript.length(), ";\n"); sqlScript.replace(sqlScript.length() - 2, sqlScript.length(), ";\n");
} }
this.sqlScript.append("-- commit all changes\n"); sqlScript.append("-- commit all changes\n");
this.sqlScript.append("commit;"); sqlScript.append("commit;");
return this.sqlScript; return sqlScript;
} }
@ -219,29 +219,29 @@ public class C4 {
this.databaseName = this.databaseName.toLowerCase(); this.databaseName = this.databaseName.toLowerCase();
this.sqlScript = new StringBuffer(); sqlScript = new StringBuffer();
this.sqlScript.append("-- #######################################################\n"); sqlScript.append("-- #######################################################\n");
this.sqlScript.append("-- auto generated ddl-script ###########################\n"); sqlScript.append("-- auto generated ddl-script ###########################\n");
this.sqlScript.append("-- generated sql creation script for ER model\n"); sqlScript.append("-- generated sql creation script for ER model\n");
this.sqlScript.append("-- database-#############################################\n"); sqlScript.append("-- database-#############################################\n");
this.sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n"); sqlScript.append("drop database if exists ").append(this.databaseName).append(";").append("\n");
this.sqlScript.append("create database ").append(this.databaseName).append(";").append("\n"); sqlScript.append("create database ").append(this.databaseName).append(";").append("\n");
this.sqlScript.append("use ").append(this.databaseName).append(";").append("\n"); sqlScript.append("use ").append(this.databaseName).append(";").append("\n");
this.sqlScript.append("-- switch autocommit off\n"); sqlScript.append("-- switch autocommit off\n");
this.sqlScript.append("set autocommit=0;\n"); sqlScript.append("set autocommit=0;\n");
this.sqlScript.append("-- tables-#################################################\n"); sqlScript.append("-- tables-#################################################\n");
for (T1 table : this.tables) { for (T1 table : this.tables) {
this.sqlScript = this.sqlScript.append("-- table ").append(table.getTablename()).append("\n"); sqlScript = sqlScript.append("-- table ").append(table.getTablename()).append("\n");
this.sqlScript = this.sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n"); sqlScript = sqlScript.append("create table ").append(table.getTablename()).append("(").append("\n");
StringBuilder keypart = new StringBuilder("primary key("); StringBuilder keypart = new StringBuilder("primary key(");
int autoincrementCounter = 0; int autoincrementCounter = 0;
long holdAutoincrementStartAt = 1L; long holdAutoincrementStartAt = 1L;
for (C3 column : table.getSkjdfhgdskjf674534()) { for (C3 column : table.getSkjdfhgdskjf674534()) {
keypart.append(column.isKey() ? (column.getColumnName() + ",") : ""); keypart.append(column.isKey() ? (column.getColumnName() + ",") : "");
this.sqlScript = this.sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append(( sqlScript = sqlScript.append(addChars()).append(column.getColumnName()).append(" ").append(column.getDatatype()).append(column.isKey() ? " not null" : "").append((
!column.isKey() && !column.isNullable()) ? " not null" : "").append(column.isAutoincrement() ? " auto_increment " : "").append(column.isUnique() ? " unique" : "").append(",").append("\n"); !column.isKey() && !column.isNullable()) ? " not null" : "").append(column.isAutoincrement() ? " auto_increment " : "").append(column.isUnique() ? " unique" : "").append(",").append("\n");
if (column.isAutoincrement()) { if (column.isAutoincrement()) {
autoincrementCounter++; autoincrementCounter++;
@ -251,13 +251,13 @@ public class C4 {
keypart = new StringBuilder(keypart.substring(0, keypart.length() - 1)); keypart = new StringBuilder(keypart.substring(0, keypart.length() - 1));
keypart.append(")").append("\n"); keypart.append(")").append("\n");
this.sqlScript = this.sqlScript.append(addChars()).append(keypart).append(")"); sqlScript = sqlScript.append(addChars()).append(keypart).append(")");
if (autoincrementCounter == 1) { if (autoincrementCounter == 1) {
this.sqlScript.append("auto_increment=").append(holdAutoincrementStartAt); sqlScript.append("auto_increment=").append(holdAutoincrementStartAt);
} else if (autoincrementCounter > 1) { } else if (autoincrementCounter > 1) {
throw new ZZ20("There is only one autoincrement value allowed, and it must be the key. Table: " + table.getTablename()); throw new ZZ20("There is only one autoincrement value allowed, and it must be the key. Table: " + table.getTablename());
} }
this.sqlScript.append(";\n\n"); sqlScript.append(";\n\n");
} }
@ -269,11 +269,11 @@ public class C4 {
throw new ZZ20(ex.getMessage()); throw new ZZ20(ex.getMessage());
} }
createInsertStatements(this.sqlScript, singeInserts, true); createInsertStatements(sqlScript, singeInserts, true);
} }
this.sqlScript.append("\n-- foreign keys-#################################################\n"); sqlScript.append("\n-- foreign keys-#################################################\n");
for (T1 table : this.tables) { for (T1 table : this.tables) {
ArrayList<C3> fkColumns = new ArrayList<>(); ArrayList<C3> fkColumns = new ArrayList<>();
@ -282,7 +282,7 @@ public class C4 {
} }
if (fkColumns.size() == 0) if (fkColumns.size() == 0)
continue; continue;
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n"); sqlScript = sqlScript.append("alter table ").append(table.getTablename()).append("\n");
HashSet<String> tableNamesInfkColumns = new HashSet<>(); HashSet<String> tableNamesInfkColumns = new HashSet<>();
@ -301,8 +301,8 @@ public class C4 {
} }
} }
for (C3 col : equalColumnsBecauseRecursive) { for (C3 col : equalColumnsBecauseRecursive) {
this.sqlScript.append("add foreign key ("); sqlScript.append("add foreign key (");
this.sqlScript = this.sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n"); sqlScript = sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n");
tableNamesInfkColumns.remove(col.getReferencesTo().tablename()); tableNamesInfkColumns.remove(col.getReferencesTo().tablename());
} }
@ -310,7 +310,7 @@ public class C4 {
for (String tableName : tableNamesInfkColumns) { for (String tableName : tableNamesInfkColumns) {
this.sqlScript.append("add foreign key ("); sqlScript.append("add foreign key (");
StringBuilder columnsOrig = new StringBuilder(); StringBuilder columnsOrig = new StringBuilder();
StringBuilder refColumns = new StringBuilder(" references " + tableName + "("); StringBuilder refColumns = new StringBuilder(" references " + tableName + "(");
for (C3 fkcolumn : fkColumns) { for (C3 fkcolumn : fkColumns) {
@ -323,15 +323,15 @@ public class C4 {
columnsOrig.append(")"); columnsOrig.append(")");
refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1)); refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1));
refColumns.append(")"); refColumns.append(")");
this.sqlScript.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n"); sqlScript.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n");
} }
this.sqlScript.replace(this.sqlScript.length() - 2, this.sqlScript.length(), ";\n"); sqlScript.replace(sqlScript.length() - 2, sqlScript.length(), ";\n");
} }
this.sqlScript.append("-- commit all changes\n"); sqlScript.append("-- commit all changes\n");
this.sqlScript.append("commit;"); sqlScript.append("commit;");
return this.sqlScript; return sqlScript;
} }
@ -384,99 +384,63 @@ public class C4 {
return csType != null ? csType : "object"; return csType != null ? csType : "object";
} }
public StringBuffer create_CS_Script() throws ZZ20 { public static String shortname(String s) {
return s.substring(s.lastIndexOf('_')+1);
this.databaseName = T3.replaceSpecialChars(this.databaseName);
this.databaseName = this.databaseName.toLowerCase();
this.sqlScript = new StringBuffer();
this.sqlScript.append("var opt = new DbContextOptionsBuilder()\n" + " .UseSqlite(@\"Data Source=").append(this.databaseName).append(".db\")\n").append(" .Options;\n");
this.sqlScript.append("// tables-#################################################\n");
for (T1 table : this.tables) {
if(table.getSkjdfhgdskjf674534().size() > 0) {
this.sqlScript = this.sqlScript.append("[Table(\"").append(table.getTablename()).append("\")]\n");
this.sqlScript = this.sqlScript.append("public class ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append(" {").append("\n");
StringBuilder constructorbuilder = new StringBuilder("\n").append(addChars()).append("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(");
StringBuilder innerconstructorbuilder = new StringBuilder();
int autoincrementCounter = 0;
long holdAutoincrementStartAt = 1L;
for (C3 column : table.getSkjdfhgdskjf674534()) {
System.out.println(column.getColumnName()+"\t"+sqltoCSType(column.getDatatype()));
String shortcolumnname = column.getColumnName().substring(column.getColumnName().lastIndexOf('_')+1);
this.sqlScript.append(addChars())
.append(column.isKey() ? ("[Key]\n"+addChars()) : "")
.append("[Column(TypeName=\"")
.append(column.getDatatype())
.append("\")]\n")
.append(addChars())
.append(!column.isNullable() ? "[Required]\n"+addChars() : "")
.append(column.isUnique()?"[Index(\""+column.getColumnName()+"Index\", IsUnique = true)]":"")
.append(column.isAutoincrement()?"[DatabaseGenerated(DatabaseGeneratedOption.Identity)]":"")
.append(sqltoCSType(column.getDatatype()))
.append(" ")
//a_id = id, a_b_id = id
.append(shortcolumnname)
.append(" { get; ")
.append(column.isKey()?"":"private ")
.append("set; }\n");
constructorbuilder.append(sqltoCSType(column.getDatatype()))
.append(" ").append(shortcolumnname).append(", ");
innerconstructorbuilder.append(addChars()).append(addChars()).append("this.").append(shortcolumnname).append("=").append(shortcolumnname).append(";\n");
if (column.isAutoincrement()) {
autoincrementCounter++;
holdAutoincrementStartAt = column.getAutoincrementStartAt();
}
} }
constructorbuilder.delete(constructorbuilder.length()-2,constructorbuilder.length()); public static String convertSqlToCSharp(String sqlStatement)
constructorbuilder.append(") {\n").append(innerconstructorbuilder).append(addChars()).append("}\n");
sqlScript.append(addChars()).append(constructorbuilder).append(addChars()).append("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(){}\n");
this.sqlScript.append("}");
/*
if (autoincrementCounter == 1) {
this.sqlScript.append("auto_increment=").append(holdAutoincrementStartAt);
} else if (autoincrementCounter > 1) {
throw new ZZ20("There is only one autoincrement value allowed, and it must be the key. Table: " + table.getTablename());
}
*/
this.sqlScript.append("\n\n");
}
}
/*
public static string convertSqlToCSharp(string sqlStatement)
{ {
// Split the SQL statement by spaces and identify the foreign key keywords // Split the SQL statement by spaces and identify the foreign key keywords
string[] words = sqlStatement.Split(' '); System.out.println(sqlStatement);
int index = Array.IndexOf(words, "FOREIGN") + 1; String[] words = sqlStatement.split(" ");
int index = -1; //Array.IndexOf(words, "FOREIGN") + 1;
StringBuilder csharpCode = new StringBuilder("\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\t{\n");
for (int i = 0; i < words.length; i++) {
System.out.println(words[i]);
if (words[i].equalsIgnoreCase("FOREIGN")) {
index = i;
// Extract the table names and key names from the SQL statement // Extract the table names and key names from the SQL statement
string primaryTable = words[index - 3]; String primaryTable = words[index - 2];
string primaryKey = words[index - 1]; String primaryKey = words[index + 2];
string foreignTable = words[index + 2]; String foreignTable = words[index + 4];
string foreignKey = words[index + 4]; String foreignKey = words[index + 5];
foreignKey = foreignKey.substring(1,foreignKey.length()-1);
foreignTable = shortname(foreignTable);
foreignKey = shortname(foreignKey);
// Generate the C# EF Core code based on the extracted information // Generate the C# EF Core code based on the extracted information
string csharpCode = "modelBuilder.Entity<" + foreignTable + ">()\n"; csharpCode.append("\t\tmodelBuilder.Entity<").append(foreignTable).append(">()\n");
csharpCode += ".HasOne(" + foreignTable.ToLower() + " => " + foreignTable.ToLower() + "." + foreignKey + ")\n"; csharpCode.append("\t\t.HasOne(e => e.").append(foreignKey.toLowerCase()).append(")\n");
csharpCode += ".WithMany()\n"; csharpCode.append("\t\t.WithMany(e => e.").append(primaryTable.toLowerCase()).append(")\n");
csharpCode += ".HasForeignKey(" + foreignTable.ToLower() + " => " + foreignTable.ToLower() + "." + foreignKey + ");\n"; csharpCode.append("\t\t.HasForeignKey(\"").append(foreignKey).append("\");\n\n");
return csharpCode;
} }
TODO: use function }
csharpCode.append("\t}\n");
*/
this.sqlScript.append("\n/* TODO: foreign keys-#################################################\n");
return csharpCode.toString();
}
public StringBuffer create_CS_Script() throws ZZ20 {
this.databaseName = T3.replaceSpecialChars(this.databaseName.toLowerCase());
sqlScript = new StringBuffer();
sqlScript.append("using Microsoft.EntityFrameworkCore;\n");
sqlScript.append("public partial class DataBase: DbContext {\n\n\tpublic DataBase(){}\n\n\tpublic DataBase(DbContextOptions<DataBase> options) : base(options) {}\n\n");
/*
sqlScript.append("\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlite(\"Data Source=")
.append(this.databaseName)
.append(".db\");\n");
sqlScript.append("\n\t//foreign keys-#################################################\n");
StringBuilder foreignKeyBuilder = new StringBuilder();
for (T1 table : this.tables) { for (T1 table : this.tables) {
ArrayList<C3> fkColumns = new ArrayList<>(); ArrayList<C3> fkColumns = new ArrayList<>();
@ -485,7 +449,7 @@ public class C4 {
} }
if (fkColumns.size() == 0) if (fkColumns.size() == 0)
continue; continue;
this.sqlScript = this.sqlScript.append("alter table ").append(table.getTablename()).append("\n"); foreignKeyBuilder.append("alter table ").append(table.getTablename()).append("\n");
HashSet<String> tableNamesInfkColumns = new HashSet<>(); HashSet<String> tableNamesInfkColumns = new HashSet<>();
@ -504,8 +468,8 @@ public class C4 {
} }
} }
for (C3 col : equalColumnsBecauseRecursive) { for (C3 col : equalColumnsBecauseRecursive) {
this.sqlScript.append("add foreign key ("); foreignKeyBuilder.append("add foreign key (");
this.sqlScript = this.sqlScript.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append("(").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n"); foreignKeyBuilder.append(col.getColumnName()).append(")").append(" references ").append(col.getReferencesTo().tablename()).append(" (").append(col.getReferencesTo().columnname()).append(")").append(" on delete restrict on update restrict,\n");
tableNamesInfkColumns.remove(col.getReferencesTo().tablename()); tableNamesInfkColumns.remove(col.getReferencesTo().tablename());
} }
@ -513,7 +477,7 @@ public class C4 {
for (String tableName : tableNamesInfkColumns) { for (String tableName : tableNamesInfkColumns) {
this.sqlScript.append("add foreign key ("); foreignKeyBuilder.append("add foreign key (");
StringBuilder columnsOrig = new StringBuilder(); StringBuilder columnsOrig = new StringBuilder();
StringBuilder refColumns = new StringBuilder(" references " + tableName + " ("); StringBuilder refColumns = new StringBuilder(" references " + tableName + " (");
for (C3 fkcolumn : fkColumns) { for (C3 fkcolumn : fkColumns) {
@ -526,14 +490,75 @@ public class C4 {
columnsOrig.append(")"); columnsOrig.append(")");
refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1)); refColumns = new StringBuilder(refColumns.substring(0, refColumns.length() - 1));
refColumns.append(")"); refColumns.append(")");
this.sqlScript.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n"); foreignKeyBuilder.append(columnsOrig).append(refColumns).append(" on delete restrict on update restrict,\n");
} }
this.sqlScript.replace(this.sqlScript.length() - 2, this.sqlScript.length(), ";\n"); foreignKeyBuilder.replace(foreignKeyBuilder.length() - 2, foreignKeyBuilder.length(), ";\n");
}
sqlScript.append(convertSqlToCSharp(foreignKeyBuilder.toString()));
*/
sqlScript.append("}\n");
sqlScript.append("// tables-#################################################\n");
for (T1 table : this.tables) {
if(table.getSkjdfhgdskjf674534().size() > 0) {
sqlScript = sqlScript.append("[Table(\"").append(table.getTablename()).append("\")]\n");
sqlScript = sqlScript.append("public class ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append(" {").append("\n");
StringBuilder constructorbuilder = new StringBuilder("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(");
StringBuilder innerconstructorbuilder = new StringBuilder();
for (C3 column : table.getSkjdfhgdskjf674534()) {
System.out.println(column.getColumnName()+"\t"+sqltoCSType(column.getDatatype()));
String shortcolumnname = shortname(column.getColumnName());
sqlScript.append(addChars())
.append(column.isKey() ? ("[Key]\n"+addChars()) : "")
.append("[Column(TypeName=\"")
.append(column.getDatatype())
.append("\")]\n")
.append(addChars())
.append(!column.isNullable() ? "[Required]\n"+addChars() : "")
.append(column.isUnique()?"[Index(\""+column.getColumnName()+"Index\", IsUnique = true)]\n"+addChars():"")
.append(column.isAutoincrement()?"[DatabaseGenerated(DatabaseGeneratedOption.Identity)]\n"+addChars():"");
if(column.getReferencesTo() != null) {
sqlScript.append("[ForeignKey(\"").append(shortname(table.getTablename())).append(shortcolumnname).append("-").append(shortname(column.getReferencesTo().tablename())).append(shortname(column.getReferencesTo().columnname())).append("\")]\n").append(addChars());
//[ForeignKey("Co_Department")]
//[InverseProperty("De_Courses")]
} }
this.sqlScript.append("*/"); sqlScript.append("public ").append(sqltoCSType(column.getDatatype()))
.append(" ")
.append(shortcolumnname)
.append(" { get; ")
.append(column.isKey()?"private ": "")
.append("set; }\n");
return this.sqlScript;
if(column.isKey())continue;
constructorbuilder.append(sqltoCSType(column.getDatatype()))
.append(" ").append(shortcolumnname).append(", ");
innerconstructorbuilder.append(addChars()).append(addChars()).append("this.").append(shortcolumnname).append("=").append(shortcolumnname).append(";\n");
}
constructorbuilder.delete(constructorbuilder.length()-2,constructorbuilder.length());
constructorbuilder.append(") {\n").append(innerconstructorbuilder).append(addChars()).append("}\n");
sqlScript.append("\n");
if(table.getKeyColumns().size()!=table.getSkjdfhgdskjf674534().size())
sqlScript.append(addChars()).append(constructorbuilder); //no constructor for tables with only keys
sqlScript.append(addChars()).append("public ").append(table.getTablename().substring(table.getTablenamePraefix().length())).append("(){}\n");
sqlScript.append("}\n\n");
}
}
//sqlScript.append("*/");
return sqlScript;
} }